私は2つのテーブルを持っています。車やタイヤ。タイヤは(!)車に属します。 (!)私は、彼らが属している車を含むすべてのタイヤを(取得したい場合ならば、私の理解から、CakePHP 3:自動的にleftJoinからフィールドを取得するには?
id | name
-------------
17 | BMW
18 | Mercedes
:
タイヤ::
id | car_id
-------------
1 | 17
2 | NULL
車私のテーブルは次のように見えます使用可能)内部結合を作成できません(含まれているため使用できません)。私は左の結合を使用する必要があります。しかし、そのように私はどのように自動的にテーブルの車のすべてのフィールドを選択するか分からない。私は
問合せ:
$query = $this->Tires->find('all');
$query->leftJoin(
['Cars' => 'cars'],
['Cars.id = Tires.car_id']
);
// brings this SQL query
SELECT Tires.id AS `Tires__id`, Tires.car_id AS `Tires__car_id`
FROM tires Tires
LEFT JOIN cars Cars ON Cars.id = Tires.car_id
しかし、どのように、私も自動的に車からすべてのフィールドを得るのですか? バーズムは実際に私が何をしようとしたものを達成するためには...私に
を、私はそれがうまくケーキによって解決されるとは思わないので、私はすぐに細部に出たい溶液を得た
UPDATE、私は、次のコードを追加する必要があります。
$query
// you need to pass each model you want to get fields for
->select($this->Tires)
->select($this->Tires->Cars);
そのタイヤでクルマは次のようになります。
...
'Cars' => [
'id' => '17',
'name' => 'BMW'
]
...
含まれていれば、次のようになります。
...
'car' => object(App\Model\Entity\Car) {
'id' => (int) 17,
'name' => 'BMW',
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Cars'
}
...
私はこれで作業できます。上記URLから取らそれでも、私は別の出力を理解していない...
'Query :: select($ articlesTable)'を使用する必要はありません - あなたはまた 'Query :: autoFields(true)'を実行することもできます - 結合によってロードされた束'Query :: select()'を別の呼び出しで書くことを避けたいとします。 – gazareth