1. 程式人生 > >兩張資料表關聯查詢

兩張資料表關聯查詢

筆記一、多表查詢
    兩張表通過關聯欄位將一張表的company.name賦值給customer.origin

    我的思路:
        1、使用model查詢將資料查詢出來,查詢結果為數二維組;
            $customer_model = model('Customer');
            $csr_get = $customer_model->get($value['id']);
        2、通過foreach將查訊的結果遍歷為一維陣列;
            foreach ($csr_all_toArray as $key => $value) {}
        3、將company中的資料通過模型查詢出來,然後巢狀在foreach中,再次遍歷;
        4、將遍歷的資料賦值給$csr_get['origin'];
            $csr_get['origin'] = $origin_res['name']
        5、列印輸出結果為一維陣列;
            dump($csr_res);
        6、將一維陣列轉換為二維陣列渲染到檢視上。

    我的問題:
        一維陣列轉二維陣列

    解決方案:
        使用model查詢,將查詢結果遍歷:
        //獲取關聯的兩張資料表
        $customer_model = model('Customer');
        $company_model = model('Company');
        $csr_all_toArray = $customer_model->select();

        foreach ($csr_all_toArray as &$value){
            $company = $company_model->where('id', $value['origin'])->find();
            $value['origin'] = $company['name'];
        }
        dump($csr_all_toArray);

    注意事項:
        1、引用符號,同指針一樣,將變數指向了一個位置,而不是複製了內容。
           引用的意思是:不同的名字訪問同一個變數內容。php的引用(就是在變數或者函式、物件等前面加上&符號)。
           $str = '第一個hello world';
           $str2= &$str;
           $str = '第二個hello world';
           echo $str2;
        2、select查詢出的是多條資料,需要在模版volist迴圈打印出來
           find和get獲取單條資料,可直接在模版列印,find 方法查詢結果不存在,返回 null;
           預設情況下,find和select方法返回的都是陣列,elect 方法查詢結果不存在,返回空陣列