我无法在雄辩中找到办法。我的架构看起来像这样。
选
位置
目前,election_id
可以包含 0 (表示适用于所有选举)或elections
表中的任何ID 。< / p>
我的选举模型与职位模型之间存在hasMany
关系,但现在我只获得具有相同election_id
的那些职位但不是那些值为0的行。
我选举模型的片段:
public function positions()
{
return $this->hasMany(Position::class, 'election_id', 'id');
}
这可能是雄辩的吗?或者我应该诉诸另一个查询?我希望尽可能多地执行此操作,因为我需要在 ElectionResource 类中加载关系。
我的ElectionResource类的片段:
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'positions' => PositionResource::collection($this->whenLoaded('positions')),
];
}
答案 0 :(得分:0)
您可以创建外键列nullable
:
$table->unsignedInteger('election_id')->nullable();
然后做这样的事情:
Election::doesntHave('position')->get();
如果您想获得不属于任何选举的职位,请执行以下操作:
Position::whereNull('election_id')->get();