ech*_*shu 9 php foreign-key-relationship laravel eloquent laravel-5
我对opps和laravel都很陌生.所以,将值插入我的users和profiles表中的hav OneToOne关系,这是我的store()方法看起来像
public function store(Requests\StoreNewUser $request)
{
// crate an objct of user model
$user = new \App\User;
// now request and assign validated input to array of column names in user table
$user->first_name = $request->input('first_name');
$user->last_name = $request->input('last_name');
$user->email = $request->input('email');
$user->password = $request->input('password');
/* want to assign request input to profile table's columns in one go
*/
$user->profile()->user_id = $user->id; // foreign key in profiles table
$user->profile()->mobile_no = $request->input('mobile');
dd($user); // nothing related to profile is returned
}
Run Code Online (Sandbox Code Playgroud)
我正在创建新记录,因此dd()永远不会返回与配置文件表相关的任何内容.
这是因为$user默认情况下对象不包括关系吗?如果是,我可以创建$user包含User模型中关联关系的对象吗?
或者我是否必须为每个表和save()数据创建两个单独的对象
但是那么push()方法的意义是什么?
编辑1
PS是的,关系已在User&Profilemodel中定义
The*_*pha 15
您可以尝试以下内容.首先保存父模型,如下所示:
$user = new \App\User;
$user->first_name = $request->input('first_name');
// ...
$user->save();
Run Code Online (Sandbox Code Playgroud)
然后使用以下内容创建并保存相关模型:
$profile = new \App\Profile(['mobile_no' => $request->input('mobile')]);
$user->profile()->save($profile);
Run Code Online (Sandbox Code Playgroud)
还要确保profile在User模型中创建了方法:
public function profile()
{
return $this->hasOne('App\Profile');
}
Run Code Online (Sandbox Code Playgroud)
我以为我会更新此答案并将其应用于Laravel 5及更高版本。我将使用@The Alpha答案作为基础。
$profile = new \App\Profile(['mobile_no' => $request->input('mobile')]);
$user->profile()->associate($profile); // You can no longer call 'save' here
$user->profile()->save();
Run Code Online (Sandbox Code Playgroud)
原因是您无法再调用save该belongsTo关系(或任何其他关系),这现在返回的实例Illuminate\Database\Query\Builder。
| 归档时间: |
|
| 查看次数: |
21147 次 |
| 最近记录: |