首页> MySQL的>如何使用范围选择雄辩的ORM中除(A和B)以外的所有行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了首页> MySQL的>如何使用范围选择雄辩的ORM中除(A和B)以外的所有行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1836字,纯文字阅读大概需要3分钟。
内容图文
![首页> MySQL的>如何使用范围选择雄辩的ORM中除(A和B)以外的所有行?](/upload/InfoBanner/zyjiaocheng/882/057b6920d81f47f8be95ab2cc6c0302c.jpg)
我试图弄清楚如何在雄辩的ORM模态中获取除几行(A和B)以外的所有行.
用户模型
public function notifications()
{
return $this->hasMany('notification','listener_id','id');
}
型号通知
public function scopeFriendship($query)
{
return $query->where('object_type', '=', 'Friendship Request');
}
public function scopeSent($query)
{
return $query->where('verb', '=', 'sent');
}
在这里,我如何获取除(Friendship and Sent)范围以外的所有用户通知.
Something like:- all rows except !(Friendship AND Sent)
解决方法:
可以将示波器与预先加载结合使用.像那样:
User::with(['notifications' => function($q){
$q->friendship();
}])->get();
但是,我们现在需要以某种方式反转范围.我可以想到两种解决方法.
1.添加否定范围
public function scopeNotFriendship($query){
return $query->where('object_type', '!=', 'Friendship Request');
}
public function scopeNotSent($query){
return $query->where('verb', '!=', 'sent');
}
User::with(['notifications' => function($q){
$q->notFriendship();
$q->notSent();
}])->get();
2.可选参数
或者,您可以在当前范围内引入一个可选参数.像这样:
public function scopeFriendship($query, $is = true)
{
return $query->where('object_type', ($is ? '=' : '!='), 'Friendship Request');
}
public function scopeSent($query, $is = true)
{
return $query->where('verb', ($is ? '=' : '!='), 'sent');
}
这样,您只需要传递false即可:
User::with(['notifications' => function($q){
$q->friendship(false);
$q->sent(false);
}])->get();
编辑
您甚至可以通过为boolean(where的AND或OR)添加第二个参数来获得更多控制权:
public function scopeFriendship($query, $is = true, $boolean = 'and')
{
return $query->where('object_type', ($is ? '=' : '!='), 'Friendship Request', $boolean);
}
如果您希望任一范围都为真:
$q->friendship(true, 'or');
$q->sent(true, 'or');
第二次编辑
终于成功了(通过聊天)
Notification::where('listener_id', $user_id)
->where(function($q){
$q->friendship(false)
$q->sent(false, 'or')
})
->get();
内容总结
以上是互联网集市为您收集整理的首页> MySQL的>如何使用范围选择雄辩的ORM中除(A和B)以外的所有行?全部内容,希望文章能够帮你解决首页> MySQL的>如何使用范围选择雄辩的ORM中除(A和B)以外的所有行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。