如何使用laravel查询生成器编写此查询?
我在使用postgres作为数据库的Laravel5.1上。我这里有一把小提琴,以防它有助于理解我的问题: 写这篇文章的大部分内容相当直截了当。我遇到的问题是属性为(…)的如何使用laravel查询生成器编写此查询?,laravel,laravel-5,Laravel,Laravel 5,我在使用postgres作为数据库的Laravel5.1上。我这里有一把小提琴,以防它有助于理解我的问题: 写这篇文章的大部分内容相当直截了当。我遇到的问题是属性为(…)的块。我试过这样的方法: DB::statement('WITH properties AS ( ... )') ->table('deals') ->select(' deals.*, json_agg(properties.*) as deal_properties, ') ...
块。我试过这样的方法:
DB::statement('WITH properties AS ( ... )')
->table('deals')
->select(' deals.*, json_agg(properties.*) as deal_properties, ')
...
->get();
但是我注意到执行在DB::statement()之后停止
查询生成器中是否有我缺少的方法?如何在查询前面加上和属性(…)
语句
我想还应该注意的是,我正在尝试实现一个存储库模式,我不能只在整个查询中包装一个DB::statement()
。如果您想从表中获取一些数据,可以使用这种类型的代码
$user=DB::table('table name')->where('name','John')->where('height','!>','7')->select('table fields which you want fetch')->get()代码>
或者尝试使用更大级别的、有说服力的ORM,这将使数据库更容易处理
更多示例或参考
我认为你可以通过快速加载来实现这一点,
假设关系设置正确。
(更多信息请参见此处:)
所以我想你可以加上
->with(['properties' => function ($query) {
$query->select('field')
->leftJoin('join statement')
->groupBy('field1', 'field2');
}])
我已经为常用表表达式创建了一个包:
$query='选择属性。*,[…];
DB::表('deals')
->withExpression('properties',$query)
->leftJoin([…])
->[...]
还可以提供查询生成器实例:
$query=DB::table('properties')
->选择('properties.*',[…])
->leftJoin([…])
->[...]
DB::表('deals')
->withExpression('properties',$query)
->leftJoin([…])
->[...]
你试过DB::select(“…”)
吗?试一下这个:DB::statement(DB::raw('WITH properties AS(…)'))我想使用查询生成器,而不是雄辩。非常好的包Jonas!我已经摆脱了这个问题,但我希望将来有人会觉得这有帮助。
->with(['properties' => function ($query) {
$query->select('field')
->leftJoin('join statement')
->groupBy('field1', 'field2');
}])