【问题标题】:Laravel 5.3 - Controller store method for this formLaravel 5.3 - 此表单的控制器存储方法
【发布时间】:2017-03-15 13:19:21
【问题描述】:

我有 4 个模型

用户 - 具有默认字段的基本 Laravel 用户

游览 - 包含字段 ['id', 'user_id', 'name', 'start_time', 'end_time']

巴士 - 带有字段 ['id', 'excursion_id', 'staff_id', 'staff_qnty', 'staff_price']

员工 - 字段 ['id', 'name']

这些是关系

User hasMany Excursion
Excursion belongsTo User

Excursion hasMany Bus
Bus belongsTo Excursion

Bus hasMany Staff
Staff hasMany Bus

我有一个 bus_staff 的数据透视表 这是用户的表单:

当用户提交表单时,这是 dd($request);

MyController@store 方法应该如何... 有没有办法用 associate() 或其他东西保存这些数据?请帮忙。

【问题讨论】:

  • 在您的输入中,没有员工姓名。
  • 我修好了...现在有 stuff_id

标签: laravel laravel-5.3


【解决方案1】:

你可以试试:

$excursion_input = ['name' => $request->get('name'), 'start_time' => $request->get('start'), 'end_time' => $request->get('end')];

$excursion = auth()->user()->excursion()->create($excursion_input);

for ($i=0; $i < count($request->get('stuff_id')); $i++)
{
    $input = [
        'staff_id' => $request->get('stuff_id')[$i],
        'staff_qnty' => $request->get('qnty')[$i],
        'staff_price' => $request->get('price')[$i],
    ];
    $bus = $excursion->bus()->create($input);
}

【讨论】:

  • 这可能可行,但代码太多...必须有一种方法可以通过关联方法和同步来实现。 Laravel 方式!!!
  • 您的input 数据格式不正确,因此我们必须循环forassociate() 用于belongsTo 关系,sync()belongsToMany 一起使用。我们在这里没有使用它们来创建模型。
猜你喜欢
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2017-12-08
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多