我試圖找到正確的方式來處理下一個tabel設置。cakephp 3更深的協會
產品是我的主表,幷包含一個ID。 UsersCarts有一個字段product_id和belongsTo它也加載產品。
到目前爲止沒有問題。我還有一個ProductsNettoDeals表,我可以存儲可能的netto價格。該表具有它自己的id和productOid,用於在productcontroller中加載產品時的hasOne關係。
當我加載UsersChart時,它會加載它的belongsTo產品,但我也希望與ProductsNettoDeals表關聯,但此表通過id(products.id = products_netto_deals.product_id)與產品連接。我無法找到正確的語法或關聯的querybuilder。我到目前爲止:
// src/Model/Table/UsersCartsTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\ORM\Query;
use Cake\Validation\Validator;
class UsersCartsTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
$this->belongsTo('Products');
$this->belongsTo('ProductsNettoDeals');
}
public function validationDefault(Validator $validator)
{
return $validator
->notEmpty('user_id', 'A user id is required')
->notEmpty('product_id', 'A product id is required');
}
public function findCart(Query $query, array $options)
{
$query
->where([
'user_id' => $options['user_id'],
//'active' => '1'
])
->contain(['Products','ProductsNettoDeals'])
//->select(['product_id','created','products.name','products.price','products.delivery_time']);
;
return $query;
}
}
在這個設置中,我總是有這個問題,即id的匹配是錯誤的。產品很好。 users_carts.product_id與products.id鏈接,但products_netto_deals.product_id應與product.id鏈接,而不與users_carts.id鏈接。我嘗試了外鍵並綁定,但兩者都是解決方案的一部分。
除了這個問題,當連接ProductsNettoDeals關聯時,激活註釋的active =>'1'時出現錯誤。該字段指示記錄是否處於活動狀態並應加載。 products_netto_deals表格中存在相同的字段,用於指示netto價格是否處於活動狀態。
錯誤:SQLSTATE [23000]:完整性約束違規:1052列「活躍」在where子句是曖昧
任何人都可以點我在協會的正確方法和錯誤的警告正確的方向。感謝前鋒。