我是Laravel Framework的初学者。我已经搜索了我的问题并得到了一些解决方案,但这些都没有解决我的问题。所以,
个人资料表:
我想在任何用户创建个人资料时填写userID
列。为此我想尝试这样的代码:
个人资料模型:
public function users(){
return $this->belongsTo('App\User','userID');
}
和用户模型:
public function profiles()
{
return $this->hasMany('App\Profile');
}
这样每次都保持null
值。我怎么解决这个问题?
谢谢你提前。
答案 0 :(得分:2)
假设您有以下(您可以这样做)
public function profiles()
{
return $this->belongsTo(\App\User::class); // we do not need to provide the user_id because laravel assume we are using that
}
<?php
// Profile.php (Model)
public function user()
{
$this->belongsTo(\App\User::class); // Again we do not need to provide the information because of the table / column names we are using
}
您有几个选项,您可以在创建配置文件时分配user_id(只要它在可填写字段中。
$profile = new Profile;
$profile->user_id = \Auth::getId(); // current logged in user
$profile->somethingElse = 'abc';
$profile->save();
或者既然我们有关系,你应该可以做这样的事情
$profile = new Profile;
$profile->somethingElse = 'abc';
// We will use the current logged in user again
Auth::user()->profiles()->save($profile); // will automagically fill in the user_id with the logged in user's id.
希望能够有所启发
答案 1 :(得分:1)
将数据插入配置文件表时,您只需执行以下操作:
$profile = new Profile();
$profile->userID = Auth::user()->id;
$profile->other_columns = 'values'
.....
$profile->save();
此处无需加入表以在“配置文件表”中插入值。希望这可以帮助你