【问题标题】:Loading relation of new model in LaravelLaravel中新模型的加载关系
【发布时间】:2022-01-04 10:55:10
【问题描述】:

我只想获取新模型的 hasOne 关系。

我可以在保存之前加载它吗?

我有$user = new User(['order_id' => $order_id]);

如何在不构建新请求的情况下获得$user->order;

【问题讨论】:

  • 你需要保存这个然后访问关系。
  • 你不能不加载不存在的模型的关系(尚未保存)
  • 你绝对可以在不保存的情况下加载它......它所关心的只是外键......所以就像你尝试的那样访问它(假设在这个例子中属性是可填充的) ....也是属于关系

标签: laravel laravel-8 laravel-7 laravel-6


【解决方案1】:

正如其他人已经指出的那样,在检索任何关系之前必须保存模型。

我通常的做法是使用lazy eager loading:

// Create new model with data
$newModel = Model::create([
    'column' => $value
]);

// Use load to retrieve any relations
return $newModel->load('myRelationship');

【讨论】:

  • 不必保存(eloquent 不做任何检查当前模型是否存在),这是一个belongsTo,只要那个外键属性有值它将尝试加载关系,因为键是现有记录,而不是新模型
猜你喜欢
  • 2021-11-29
  • 2021-07-19
  • 2017-07-26
  • 1970-01-01
  • 2015-12-16
  • 2014-12-30
  • 2017-09-17
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多