Laravel检查相关模型是否存在

我有一个口才的模型,其中有一个相关的模型:

public function option() {

return $this->hasOne('RepairOption', 'repair_item_id');

}

public function setOptionArrayAttribute($values)

{

$this->option->update($values);

}

创建模型时,它不一定具有相关的模型。更新时,可能会添加一个选项,也可能不会添加。

因此,我需要检查相关模型是否存在,以分别对其进行更新或创建:

$model = RepairItem::find($id);

if (Input::has('option')) {

if (<related_model_exists>) {

$option = new RepairOption(Input::get('option'));

$option->repairItem()->associate($model);

$option->save();

$model->fill(Input::except('option');

} else {

$model->update(Input::all());

}

};

<related_model_exists>我要查找的代码在哪里。

回答:

在 您不能count在关系对象上使用,因此对于所有关系都没有一种万能的方法。使用查询方法代替@tremby,如下所示:

$model->relation()->exists()


适用于所有关系类型的通用解决方案( ):

if (count($model->relation))

{

// exists

}

由于动态属性返回Model或,因此这将适用于每个关系Collection。两者都实现ArrayAccess

所以它是这样的:

hasOne / belongsTo/ morphTo/morphOne

// no related model

$model->relation; // null

count($model->relation); // 0 evaluates to false

// there is one

$model->relation; // Eloquent Model

count($model->relation); // 1 evaluates to true

hasMany / belongsToMany/ morphMany/

morphToMany/morphedByMany

// no related collection

$model->relation; // Collection with 0 items evaluates to true

count($model->relation); // 0 evaluates to false

// there are related models

$model->relation; // Collection with 1 or more items, evaluates to true as well

count($model->relation); // int > 0 that evaluates to true

以上是 Laravel检查相关模型是否存在 的全部内容, 来源链接: utcz.com/qa/405481.html

回到顶部