前提・実現したいこと
joinしたテーブルの値を取得したい
以下のコードだと、Productsテーブルの値しか取得できていない
Products,Tags両テーブルの値をSQL実行時に取得したい
該当のソースコード
php
1 2 $product = $this->Products->find(); 3 $product->leftJoin( 4 ['Tags' => 'tags'], 5 ['Products.id = Tags.product_id'] 6 ); 7 8 $condition = []; 9 if (!empty($word)) array_push($condition, ['field01 like ' => "%".$word."%"]); 10 $product->where($condition);
試したこと
以下はSQLエラー
php
1 2 $product = $this->Products->find()->select(['Products.*','Tags.*']); 3 $product->leftJoin( 4 ['Tags' => 'tags'], 5 ['Products.id = Tags.product_id'] 6 ); 7 8 $condition = []; 9 if (!empty($word)) array_push($condition, ['field01 like ' => "%".$word."%"]); 10 $product->where($condition);
テーブル情報
sql
1create table tags ( 2 id INT AUTO_INCREMENT PRIMARY KEY, 3 product_id int not null, 4 position datetime default null, 5 name varchar(20) default null, 6 note1 text default null, 7 memo text default null, 8 created DATETIME default null, 9 FOREIGN KEY product_key (product_id) REFERENCES products(id) 10) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 11 12CREATE TABLE products ( 13 id INT AUTO_INCREMENT PRIMARY KEY, 14 field01 varchar(20) default NULL, 15 code VARCHAR(50) NOT NULL, 16 item varchar(255) default null, 17 memo text default null, 18 created DATETIME default null 19) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
補足情報
cakephp4
php7.2
関係するテーブルの定義はどうなっているのでしょうか。
テーブル定義追加しました
もう1点
>以下はSQLエラー
どのようなエラーが出たのでしょうか。
それ次第ですが・・・今のところ「結合したテーブルの値」を参照しようとしているコードが見受けられなかったもので。
実行時のSQLはdebug_kitを使って確かめています。
今の状態だとProductsテーブルの値しか取得できません。
エラーは
Product__*というカラムが見つからない
そんな意味のメッセージでした
*でなく、フォールド名を個別に列記すれば両テーブルから取得できるかもしれませんが、。。
>そんな意味のメッセージでした
意訳せずそのままコピペで提示してください。
>*でなく
ORM経由ではなく普通にSQL組むときにどうするか考えれば調べる方向性も明確になるかと思います
回答1件
あなたの回答
tips
プレビュー