簡體   English   中英

Laravel5 whereRaw無法參數化列名

[英]Laravel5 whereRaw not working to parameterize column name

我正在嘗試使用whereRaw語句來構建send_storename列。 但是,當我嘗試連接這些值時,該查詢不起作用。 當我修復列時,它可以工作。 我怎樣才能做到這一點?

$query = $this->model->getQuery()->where('products.environment_hash', $hash )->whereRaw('products.deleted_at is null');
$query->select('sku_config','name', 'stock_quantity', 'color', 'size', 'special_price', DB::raw('(special_price/default_price-1)*100 as profit_mark'));
$query->leftJoin('ads', 'ads.product_id', '=', 'products.id');
$query->whereRaw("products.sent_? = 0", array('storename'));

我認為您誤會了使用時發生了什么? 這里。 這不是簡單的串聯,而是參數綁定。 參見http://php.net/manual/en/pdostatement.bindparam.php

但是,串聯( . )會為您工作。

$query->where("products.sent_".$storeName.", 0);

但是,這似乎不是一個好的設計,因為它要求您每次添加新商店時都要做類似的事情以及更改表。

如果還不算太晚,我會重新考慮這種方法。 您可能會創建一個新的stores表,每個stores表都有自己的id 然后創建其中包含一個樞軸表product_idstore_idsent塔。 然后,您將可以利用belongsToMany關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM