第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CakePHP:使用條件參數(shù)檢索列表

CakePHP:使用條件參數(shù)檢索列表

PHP
SMILET 2022-07-09 09:51:54
我很難理解如何使用條件格式檢索關聯(lián)數(shù)據(jù)。我正在使用 CakePHP 3.7.9。餐桌產品idnamecustomer_code表訂單idnamedate表 item_ordersidorder_idnameproduct_iddescription在(另一個控制器的)視圖中,我有兩個select控件。第一個填充id|name了現(xiàn)有訂單。當用戶選擇一個時,select應按照以下條件填充第二個控件:如果product_id不為空 ->name (customer_code)在products表中檢索否則使用該description值我ajax用來將電流發(fā)送order_id到控制器,該控制器應該發(fā)回填充第二個所需的 html select:<?php $this->Html->scriptStart(['block' => 'script', 'inline' => false]); ?>    $(document).on('change', '#order-id', function() {        $.ajax({            type: "POST",            headers: { 'X-CSRF-Token': <?= json_encode($this->request->getParam('_csrfToken')); ?> },            url:  '<?php echo Router::url(array('controller' => 'ItemDeliveryNotes', 'action' => 'getOrderItems'));?>',            data: { 'orderId': $('#order-id').val() },            success: function(response) {                $('#itemOrders').html(response.data.itemOrders);            }        });    });<?php $this->Html->scriptEnd(); ?>public function getOrderItems(){    if ($this->request->is(['ajax', 'post']))    {        $id = $this->request->getData('orderId'); // <-- fixed        $items = $this->getItems($id);        $combo = [];        foreach ($items as $key => $value)        {            $combo[] = "<option value='" . $key . "'>" . $value . "</option>";        }        $data = ['data' => ['itemOrders' => $combo]];        return $this->json($data);    }}private function getItems($id = null){    $items = ???; // <-- here I need to retrieve the list as above    return $items;}我能夠從單一來源獲取數(shù)據(jù),但在這種情況下,我不明白如何編寫查詢。
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

如評論中所述,您將數(shù)據(jù)發(fā)送為orderId,但訪問它為order_id,并且您認為您還使用了錯誤的控制器名稱。

您很可能在生成 URL 時沒有收到錯誤,因為您正在使用fallbacks或手動捕獲所有路由,即類似 的路由/:controller/:action,它將匹配任何控制器/操作。向不存在的端點發(fā)出請求時將引發(fā)錯誤,但您尚未為 AJAX 調用定義錯誤/失敗處理程序,因此錯誤正在被吞沒,您的 CakePHP 錯誤中仍然應該有一些東西日志。

話雖如此,您真的不應該在每行發(fā)出額外的查詢(即在valueField回調中發(fā)出查詢),而是在 SQL 級別進行過濾,例如使用CASE表達式,或包含Products關聯(lián),以便您擁有所需的所有數(shù)據(jù)用于在 PHP 級別進行過濾,應該很簡單:

$items = $this->ItemsDeliveryNotes->Orders->ItemOrders

    ->find('list', [

        'keyField' => 'id',

        'valueField' => function (\Cake\Datasource\EntityInterface $row) {

            if ($row->has('product')) {

                return $row->product->name . ' (' . $row->product->customer_code . ')';

            }


            return $row->description;

        }

    ])

    ->contain('Products')

    ->where([

        'order_id' => $id

    ]);


查看完整回答
反對 回復 2022-07-09
  • 1 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號