Laravel的子查询from方法
Laravel的子查询from方法
如何在laravel中使用内部查询。请注意,我的问题与这个问题不同。\n我有一个通用的方法,返回常规和复杂的内部查询。通过阅读laravel的源代码,我发现了一个临时解决方法\n
$query->whereIn('column', function ($query) { /*noop*/ }); $innerQuery = Model::myComplexInnerQueryMethod()->getQuery(); $query->getQuery()->wheres[0]['query'] = $innerQuery; $query->mergeBindings($innerQuery);
\n但这很丑陋(至少可以这么说)\n有什么想法吗?\nmartin的答案更新\n
class MyModel extends \Eloquent { // @return \Illuminate\Database\Query\Builder static function myComplexInnerQueryMethod($index) { return static::query()->join(…)->join(…)->where(…)->where(…)->etc(); } } class Analytics extends MyModel { function scopeIndex($query, $index) { $query->whereIn('column', function ($query) { /*noop*/ }); $innerQuery = self::myComplexInnerQueryMethod($index)->getQuery(); $query->getQuery()->wheres[0]['query'] = $innerQuery; $query->mergeBindings($innerQuery); return $query; } }