我運行下面的查詢:Laravel查詢構建器而不是取代問號
return $this->hasMany('App\Task', 'company')
->whereNotIn('id', function($query)
{
$query->from('tasks')->join('projects', function($join)
{
$join->on('projects.id', '=', 'tasks.project')
->where('projects.status', '=', Project::STATUS_ARCHIVED);
})
->select('tasks.id');
});
但是,如果我輸出的整個原始查詢我得到如下:
select * from `tasks` where `tasks`.`company` = 1 and `id` not in (select `tasks`.`id` from `tasks` inner join `projects` on `projects`.`id` = `tasks`.`project` and `projects`.`status` = ?)
正如你所看到的原始查詢的結尾有一個問號未被實際值取代,而是'tasks'.'company' = 1
。
是的,我知道你的意思,但實際的查詢是由引起的SQL語法錯誤抱怨說問號哎呦異常顯示。我只複製了由錯誤返回的SQL原始查詢,並用實際值替換了問號,然後使用Sequel Pro手動運行查詢。 – siannone 2015-03-25 10:08:43
當你用實際值替換''?''並且手動運行查詢時,它是否正常工作? – 2015-03-25 10:16:03
是的,它的工作。 – siannone 2015-03-25 10:17:53