如何解决Laravel访问者关系 关系中调用关系时在查询中
我有关系批处理和项目
function project(){
return $this->hasMany(Project::class,'batch_id');
}
我需要根据模型中的Laravel访问器,基于所有项目(状态= COMPLETED)获得完成的批次。
这是我的示例数据
请帮助。谢谢!
解决方法
关系中
您可以在关系中添加where内联
function project(){
return $this->hasMany(Project::class,"bacth_id")->where("status","COMPLETED");
}
调用关系时
如果您想保留不带where的关系并且仅在某些时候使用它,则可以调用该关系并添加where。例如,如果您有模型的实例(在此示例中,我将其称为$ model),则可以执行以下操作,请注意关系名称旁边的括号:
$completed = $model->project()->where("status","COMPLETED")->get();
在查询中
如果您要编写的查询试图仅插入项目完成的那个模型的版本,则可以使用 whereHas 函数。因为我不知道您的示例中的模型叫什么,我只是将其称为模型
$posts = Model::whereHas("project",function (Builder $query) {
$query->where("status","COMPLETED");
})->get();
,
您需要从以下位置更改代码
function project(){
return $this->hasMany(Project::class,'batch_id');
}
到
function project(){
return $this->hasMany(Project::class,'project_id');
}
获取完成的批次
$batch=Project::where('status','COMPLETED')->pluck('batch_id');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。