Laravel与belongsTo的关系为0 ids

时间:2018-02-26 09:44:39

标签: laravel eloquent relationship

我无法在雄辩中找到办法。我的架构看起来像这样。

  • ID
  • 标题

位置

  • ID
  • election_id
  • 标题

目前,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')),
        ];
    }

1 个答案:

答案 0 :(得分:0)

您可以创建外键列nullable

$table->unsignedInteger('election_id')->nullable();

然后做这样的事情:

Election::doesntHave('position')->get();

如果您想获得不属于任何选举的职位,请执行以下操作:

Position::whereNull('election_id')->get();