我在拉维尔建立了以下关系:

OrderStatus Model
  - hasMany('Order')

 Order Model
  - 'belongsTo('OrderStatus');

数据库由一个orders表和一个order_statuses表组成.orders表有一个order_status_id的字段.

当我保存订单时,我通过获取适当的订单状态模型手动设置order_status_id,如下所示:

$status = OrderStatus::where(['name'=>'sample_status'])->firstOrFail();
$order->order_status_id = $status->id;
$order->save();

我想知道是否有一个内置的功能来实现这一点,而不是手动设置order_status_id.我在Laravel文档中读过"附加相关模型"和"关联模型",但我不知道这些是否适合我的用例.我认为我遇到的问题是,我直接使用子模型(顺序),并试图设置它的父模型.有这个功能吗?

推荐答案

当然你能做到:

$status = OrderStatus::where(['name'=>'sample_status'])->firstOrFail();
$order = new Order;
$order->status()->associate($status);
$order->save();

(status()是belongsTo关系.您可能需要调整该名称)

Laravel相关问答推荐

保存很多模型太慢

Laravel Livewire与自定义JS有关的多姆问题

LaravelEloquent 的模型如何将值从控制器内部的函数传递到Render()

如何在 laravel 5.8 中显示自定义消息?

如何在 Laravel 5 中添加我自己的自定义类?

Laravel 5.3:语法错误或访问冲突:1463 HAVING 子句中使用了非分组字段距离

Carbon(laravel)处理无效日期

路由中间的可选参数

Laravel 4,如何测试复选框是否被选中?

Laravel excel maatwebsite 3.1 导入,excel 单元格中的日期列返回为未知格式数字.如何解决这个问题?

PHP 5.5,什么情况下PHP会导致很高的committed memory

Homestead:文件夹映射到错误的文档根目录

Laravel 初学者的良好开端

Laravel 在保存前生成 slug

将 Laravel 集合排序为 ID 数组

Laravel 应用程序连接数据库时速度很慢

如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

Eloquent 模型不更新 updated_at 时间戳

在 Laravel 中判断会话超时

Distinct values with pluck