laravel Eloquent 多个字段关联同一个表后的重复查询问题
laravel Eloquent 多个字段关联同一个表后的重复查询是否可以进一步优化?
class Bill extends Model
{
/**
* 与经办人关联关系
*/
public function operateUser()
{
return $this->belongsTo('App\Models\User', 'operate_user_id');
}
/**
* 与制单人关联关系
*/
public function docomentUser()
{
return $this->belongsTo('App\Models\User', 'document_user_id');
}
/**
* 与审核人关联关系
*/
public function checkUser()
{
return $this->belongsTo('App\Models\User', 'check_user_id');
}
}
查询语句示例
$bills = BillModel::with('operateUser', 'docomentUser', 'checkUser'])->find(1);
当 operate_user_id
,document_user_id
,check_user_id
都是 1
的时候,会产生三条相同的sql语句
select * from `users` where `users`.`id` in ('1') and `users`.`deleted_at` is null
感觉这个挺浪费的,如果能够进行相同语句判断,然后只查询一次就好了;
刚用laravel时间还不久,不知laravel是否内置了去重的功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没太听懂你到底想怎么去重。如果你分别调用三个函数,那肯定要查询三次,因为和users表关联的是三个字段,无论如何你都至少要bills.a = 1/bills.b = 1/bills.c = 1查询三个字段。这三个是不同的字段,不可能去重的,你获取的是bills和users关联的数据,不光是users表的数据。