如何从laravel中的另一个数据库表中检索值?

时间:2016-04-18 05:02:00

标签: php mysql sql-server laravel laravel-5.2

我有两个名为usersprofiles的表。在users表中,它有一个名为id的列,在profiles表中有一个名为userID的列users。现在我想要id表格增加userID,然后userID分别自动填充。

如果有人创建了个人资料,那么users列会根据登录idclass User extends Authenticatable { /** * The attributes that are mass assignable. * * @var array */ protected $table ="users"; protected $fillable = [ 'userName', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; public function profileHave(){ return $this->hasOne('App\Profile','userID'); } } 自动填充。我该怎么做?

用户模型:

class Profile extends Model
{
    //
    protected $table = "profiles";
    public $fillable = ["userID","firstName","lastName","middleName","DOB","gender","featuredProfile","email","phone","summary","profilePic"];

    public function userHave(){
        return $this->belongsTo('App\User','userID');
   }
}

个人资料模型:

profiles

但是当我向用户添加配置文件时,userIDusers列中的列为空。但是应该根据class Dog(): def Bark(): print("woof") Marley = Dog Marley.Bark() 表的登录ID填写。

顺便说一下,我是Laravel的新人。 感谢。

2 个答案:

答案 0 :(得分:1)

获取此类用户ID

$id = Auth::id();

然后将此值分配给配置文件中的用户属性,如

$profile->userID = $id

答案 1 :(得分:0)

保存个人资料时,请使用以下内容添加用户:

$profile->userHave = $user

有几件事:

  • 您的Profile模型不需要userID可填写。这是由你的关系填补的,所以不应该是可填写的。

  • 这个关系有点奇怪。它应该是您希望用于获取关系的属性的名称。例如,我会在您的个人资料中调用用户关系user

    public function user()
    {
        return $this->belongsTo('App\User','userID');
    }
    

    使用此功能,您可以将用户添加到配置文件中,其中包含以下内容:

    $profile->user = $user;
    
  • 最后,考虑您是否确实需要个人资料模型

    您的个人资料模型中的所有属性都是用户的属性。如果您计划为每个用户提供个人资料,则您没有理由为个人资料设置不同的模型。