【发布时间】:2019-09-16 13:29:01
【问题描述】:
我正在尝试在 Laravel 控制器中填充两个通过数据透视表连接的 mySQL 表,这是我的代码目前的样子:
public static function createUser($request)
{
$user = request()->validate([
'full_name' => 'required',
'username' => 'required',
'password' => 'required|alpha_num',
'role' => 'required'
]);
$user['password'] = bcrypt($user['password']);
$user->factory_data()->attach($request->id, ['division_name' => $request->input('division'), 'work_center_name' => $request->input('center')]);
User::create($user);
}
基本上这段代码试图实现的是:我正在尝试验证前四个字段的输入,对密码使用 bcrypt,然后将其他两个字段的输入附加到要求。我对如何完成这项任务感到很迷茫,此时我从 Laravel 的 Telescope 得到的错误是Call to a member function factory_data() on array。有人可以帮助我或指出我做错了什么吗?提前致谢!
附言我愿意提供解决问题所需的所有代码。
【问题讨论】:
-
您在经过验证的请求上调用 factory_data,而不是在模型上。更改请求的变量名称或在创建时初始化 $user
标签: mysql laravel pivot-table