Laravel 4 数据透视表添加的查询为空
我正在使用Laravel4.1,并试图从数据透视表中检索计数信息。轴的名称是project_subject,它将项目和主题连接在一起。我在主题模型中使用以下内容:Laravel 4 数据透视表添加的查询为空,laravel-4,pivot-table,Laravel 4,Pivot Table,我正在使用Laravel4.1,并试图从数据透视表中检索计数信息。轴的名称是project_subject,它将项目和主题连接在一起。我在主题模型中使用以下内容: public function getUnassignedCount($projectId) { return Subject::project() ->wherePivot('project_id', $projectId) ->wherePivot('assigned', 0)
public function getUnassignedCount($projectId)
{
return Subject::project()
->wherePivot('project_id', $projectId)
->wherePivot('assigned', 0)
->count();
}
这将返回如下查询:
选择计数(*)作为projects
内部联接project\u subject
对projects
id
project\u id
的聚合,其中project\u subject
subject\u id
为空且project\u subject
project\u-id
<1'项目主题
已分配
=“0”
可以看出,会自动为project\u subject
subject\u id
插入一个空值,这会导致查询不返回任何内容。看起来奇怪的是,拉威尔会自动添加一个我不要求的专栏
如何正确查询数据透视表以获得所需的计数?缺少创建ProjectSubject模型。根据Laravel API,where语句中缺少运算符值 public BelongToMany wherePivot(字符串$column,字符串$operator=null,混合$value=null,字符串$boolean='和')
我使用了此处发布的自定义枢轴模型: 在我的问题中,我没有使用上述代码,而是像这样调用newPivot:
public function getUnassignedSubjectsCount($projectId)
{
$pivot = Project::newPivot($this, $this->attributes, 'project_subject', true);
return $pivot->where('project_id', 1)->where('assigned', 0)->count();
}
上述结果符合预期。谢谢,但我已经按照您的建议尝试了不同的方法,但仍然不起作用。也就是说,它仍然在我不想包含的字段上添加了“isnull”。
public function getUnassignedSubjectsCount($projectId)
{
$pivot = Project::newPivot($this, $this->attributes, 'project_subject', true);
return $pivot->where('project_id', 1)->where('assigned', 0)->count();
}