PHP模型关联一对多如何给关联表加条件?
我要拿出当前用户的通知列表(包括用户是否查看的状态,状态是在另一张表的,如果notice_record 存在 user——id的话,代表是已经阅读了)表结构如下
下面是我的代码
<?php
namespace appindexmodel;
use thinkModel;
class Notice extends Model
{
public function record()
{
return $this->hasMany('NoticeRecord','notice_id');
}
}
//查询当前用户的通知列表(假设当前的用户id=100)
$list = Notice::hasWhere('record',['user_id'=>100])->select();
这样查出来的结果和我想象中的不一样,没有过滤掉 notice_record表中不属于 user_id=100的数据。是官方的BUG还是我使用出错了,我尝试$list = Notice::hasWhere('record',['user_id'=>100])->select();里面的user_id故意写错user_ids,报错说notice_record表没有这个字段,那么证明我的思路是对的,为什么结果和我想象的不一样,我很郁闷
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先回答第一个问题
你要求的是 在
notice
表中存在,检索的时候 排除notice表中有的数据你可以这样做,不需要模型关联
首先,取出
notice
表中的数据,只需要取出user_id
字段的数据第二个问题 查询当前用户的通知列表
不是通过自增 id 来查询,前 100 条数据,
如果是使用 sql 语句查询 , 则使用 limit 0,100
使用laravel的话,则有一个take方法, 例如take(100)