当前位置: 首页 > 面试题库 >

Laravel检查相关模型是否存在

徐涵亮
2023-03-14
问题内容

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

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>我要查找的代码在哪里。


问题答案:

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

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

适用于所有关系类型的通用解决方案( php 7.2之前的版本 ):

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


 类似资料:
  • 问题内容: 我具有以下数据库结构: 在我的项目永久链接页面上,我有一个“添加到收藏夹”按钮,可在其中插入新行 如果用户已经在收藏夹中将其替换为“从收藏夹中删除”按钮,我希望能够将其替换。 我无法弄清楚其背后的逻辑-是否需要检查其中是否存在具有当前用户ID和永久链接ID的行?这对我不起作用: 问题答案: 您可能想要这样的东西:

  • 问题内容: 我已经看到很多人使用这种方法来检查laravel模型是否已保存。所以现在我想知道这是否是一种安全的方法。 而且我还可以检查以下查询是否已执行 检查模型是否保存 例如: 以上是检查模型是否保存的安全方法吗? 检查查询是否返回结果 例如: 如果找不到产品,以上内容是否会返回错误? 检查查询是否执行 例如: 上面是否检查用户是否已创建? 问题答案: 检查模型是否保存 会返回一个布尔值,保存或

  • 问题内容: 我是Laravel的新手。请原谅新手问题,但是如何查找记录是否存在? 我在这里可以查看是否有记录? 问题答案: 这取决于您之后是否要与用户一起使用,还是仅检查是否存在。 如果要使用用户对象(如果存在): 如果您只想检查 甚至更好

  • 我是拉雷维尔的新手。请原谅这个新手的问题,但是我如何找到是否存在记录? 我可以在这里做什么来查看是否有记录?

  • 我很难让这东西工作。基本上,一旦我单击用户配置的删除按钮,这个函数就会被调用。用户可以有多个配置。发生的情况是,一旦我删除了一个配置,它会寻找另一个配置,如果找到了,它会将其设置为当前配置文件。第一位工作正常,但如果返回什么,而不是输入它返回我一个错误... 代码: 错误: 请记住,我对Laravel和整个MVC环境非常陌生。

  • 我使用下面的代码使用model访问我的数据库。 我用下面的代码检查了$人是否为空。 实际上是空的。但我得到的结果为作为