Laravel 5.1 中两个 Table 之间的多对多关系联接查询
Many to Many Relationship Join Query between Two Table in Laravel 5.1
第一个User
table有四列:id ,first_name, last_name,password
我的Address
Table有四个列id , company_name,email , phone
普通Address_user
Table:
我的用户模型如下所示 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_id
和 user_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
}
第一个User
table有四列:id ,first_name, last_name,password
我的Address
Table有四个列id , company_name,email , phone
普通Address_user
Table:
我的用户模型如下所示 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_id
和 user_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
}