我正在研究Laravel 4.据我所知,我可以做子查询:
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
Run Code Online (Sandbox Code Playgroud)
我发现了并发症,我无法在子查询中使用范围并禁用soft_delete让我更改源代码.
我希望它是:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
Run Code Online (Sandbox Code Playgroud)
现在,我可以添加范围,轻松禁用soft_delete.
我试过,并找到了一个解决方案,我必须更改Laravel的Database\Query\Builder代码,函数whereInSub,第786行.
call_user_func($callback, $query = $this->newQuery());
Run Code Online (Sandbox Code Playgroud)
至:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
Run Code Online (Sandbox Code Playgroud)
修改Laravel框架的供应商是有害的.所以我想问一下如何安全地做到这一点.
抱歉,因为我的英语不好.
谢谢你的阅读.