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