Laravel5 whereRaw无法参数化列名

时间:2016-08-29 13:08:16

标签: php laravel laravel-5

我正在尝试使用whereRaw语句构建列sent_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'));

1 个答案:

答案 0 :(得分:0)

我认为你误解了在这里使用?时发生的事情。它不是简单的连接,它是参数绑定。请参阅http://php.net/manual/en/pdostatement.bindparam.php

但是,连接(.)会对你有用。

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

然而,这似乎不是一个好的设计,因为它要求你做这样的事情,并在每次添加新商店时改变表格。

如果还不晚,我会重新思考这种方法。您可以创建一个stores的新表,每个表都有自己的id。然后创建一个包含product_idstore_idsent列的数据透视表。然后,您就可以利用belongsToMany关系。