これが私が読んだドキュメントであり、これが私が試しているものです。まず、モデルの関連付けを設定します。
<?php
class Proveedor extends AppModel {
public $hasMany = 'Libro';
public $displayField = 'Nombre';
}
<?php
class Libro extends AppModel {
public $belongsTo = 'Proveedor';
}
次に、コントローラーとアクション関数を作成しました。
public function filter($proveedorName = null) {
// proveedorName is a string: wrox, apress, oreilly, etc.
// I need to find all libros that have their 'Proveedor' as $proveedorName.
$this->set('libros', $this->Libro->find('all',
array('conditions' => array('Libros.Proveedor.Name' => $proveedorName))));
$this->set('proveedores', $this->Libro->Proveedor->find('list'));
}
ポップアップ表示されるエラーメッセージは次のとおりです。
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Libros.Proveedor.Name' in 'where clause'
libros
私のユースケースは非常に単純です。ドロップダウンリストから証明者を選択し、そのサプライヤ()からの本のコレクション()をWebサイトに返すようにしproveedor
ます。
それはあなたが訪問するかのようです:www.google.com/cars/filter/nissan
-あなたはすべての日産車を見たいです。
ここで同じプリンシパル:www.google.com/libros/filter/apress
-私はすべての本(libros
)をprovedor(supplier
)Apressから取得したいと思います。
説明のために、Entity FrameworkとLinqを使用するC#では、次のことができます。
var books = db.Libros.Where(x => x.Proveedor.Name == "Apress");
CakePHPで同様のことをすることはできますか?