【发布时间】:2014-08-24 15:43:55
【问题描述】:
我正在开发 Laravel 4。 据我所知,我可以做子查询:
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
我发现了一些复杂情况,即我不能在子查询中使用范围并禁用 soft_delete 使我对源代码进行了如此多的更改。
我希望是:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
现在,我可以轻松添加范围,禁用 soft_delete。
我尝试过,找到了一个解决方案,我必须更改 Laravel 的 Database\Query\Builder 代码,函数 whereInSub,第 786 行。
call_user_func($callback, $query = $this->newQuery());
到:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
修改 Laravel 框架的供应商是有害的。所以我想问一下如何安全地做到这一点。
对不起,我的英语不好。
感谢您的阅读。
【问题讨论】:
标签: php laravel subquery eloquent