Laravel 5.4雄辩的一对多关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.4雄辩的一对多关系相关的知识,希望对你有一定的参考价值。

我很清楚我对Laravel雄辩关系的了解。不幸的是,我无法解决/找到一对多关系的问题。有人有任何想法/建议我的代码有什么问题吗?

怎么了

Eloquent没有从手机表中找到任何相关数据。 Current result (pastebin)

应该怎么做

从移动表中获取所有相关数据。

涉及的代码

我正在进行干净的Laravel 5.4安装。这是我创建/添加的唯一代码。

用户模型

public function phone(){

    return $this->hasMany('AppMobile', 'user_id', 'id');

}

有了这个功能,eloquent会从移动表中获取列user_id == id的所有记录吗?

用户表

Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

移动表

 Schema::create('mobiles', function (Blueprint $table) {
        $table->increments('id');

        $table->integer('user_id');

        $table->string('phoneNumber');

        $table->timestamps();
    });
答案

根据您的代码,我认为问题出在您的模型中。它应该如下:

用户表

protected $fillable=['name', 'email' , 'password'];

public function Mobile(){

    return $this->hasMany(Mobile::class);

}

移动表

protected $fillable=['user_id', 'phonenumber'];

public function User(){

    return $this->hasMany(User::class);

}

您需要在模型上指定可填充或受保护的属性,因为默认情况下所有Eloquent模型都会防止批量分配。

鉴于您从数据库正确调用,这应该工作。

另一答案

正如@Maraboc在评论部分中所建议的那样,使用内容创建一个user函数

public function user(){
    $this->belongsTo(User::class);
}

这解决了我的问题

以上是关于Laravel 5.4雄辩的一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

laravel 雄辩的关系一对多返回 null

Laravel 5.6 |雄辩的一对多关系

雄辩的关系,模型的链接(Laravel 5.4)

Laravel 雄辩的一对一通过(级别/树)关系

如何在 Laravel 雄辩关系中添加多个条件

#ASK Laravel 深厚的口才关系,来自患者一对多注册一对一综合诊所