私はactivedataproviderのクエリを実行していますが、これは検索の目的で使用する予定です。私はクロスジョインを使用する必要があります。私はjoinWithを使用しましたが、製品との関係がない倉庫モデルについて不平を言います。それは製品を呼び出していた。それが十字結合なので、関係を引き起こさないように、ここの周りには何らかの作業がありますか?yii2を使ってクロスジョインする適切な方法はありますか?
その他の注意:product_id、product.categoryなどの特定の属性は、倉庫に基づく元のモデルには存在しません。パブリックプロパティ/属性変数を追加しただけでは問題は解決しますか? (impossibileまたは)困難であるすべてのクエリあなたがする必要はありませんので、あなたは配列としてクエリのレコードを取得しますfindBySql
$sql = "select
product.id as id
, warehouse.warehouse as warehouse
, product.category as category
, product.product as product
, coalesce(critical.min_stock, -1) as min_stock
from Warehouse
cross join product
left join critical on ritical.product_id = product.id AND critical.warehouse_id = warehouse.id
where warehouse.id' = " . $this->_id
$model = Warehouse::findBySql($sql);
を使用して、モデル内の倉庫と製品との間の関係を定義し、ありますか? –
@EdvinTenovimas app \ models \ Warehouseには「product」という名前の関係はありません。 – Corbee
'Product'というモデルがあり、それらのテーブルの間にDBに関係がありますか? –