Laravel 5.1 中两个 Table 之间的多对多关系联接查询

Many to Many Relationship Join Query between Two Table in Laravel 5.1

第一个Usertable有四列:id ,first_name, last_name,password

我的AddressTable有四个列id , company_name,email , phone

普通Address_userTable:

我的用户模型如下所示 http://pastebin.com/ntuvJ8Lj 我的地址模型如下所示

use Illuminate\Database\Eloquent\Model;

class Address extends Model
{
    protected $fillable = [
    'created_by',
    'company_name',
     'phone', 
     'email', 'address'
    ];
    public function users()
    {
        return $this->belongsToMany('App\Models\User');
    }
    public function getAddressListAttribute()
    {
        return $this->users->lists('id');
    }
}

现在我需要登录用户涉及或连接的所有地址

1:

User.php

添加您与 'address' 模特的关系:

public function addresses() {
        return $this->belongsToMany( Address::class, 'address_id', 'user_id' )->withTimestamps();
    }

您在 Address.php 中与 users 的关系是正确的,因此我不会在此处重新输入。

请注意,您不需要写 address_iduser_id,因为如果您遵循惯例,只需 eloquent 即可预测它!

但我可以看出你没有遵循命名你的 table 的惯例,如果你想 Eloquent 预测你和你之间的关系model 和数据库中的 table 那么你必须使你的模型名称成为 table 名称的单数,反之亦然,table: users model: User.

要点:

$user = auth()->user(); // get logged in user

$addresses = $user->addresses()->get(); // get this user addresses. or use $user->addresses only 

// now you may loop through it and have each of your addresses.
foreach($addresses as $address){
    var_dump($address->company_name); // or perhabs ->email
}