我在Laravel eloquent 的理解上有问题。 我在 mysql 中有 4 个表:
A类和B类的id相同。 A类和C类的id是一样的。 A类的标识符可以在B表中,也可以在C表中。
转换为模型 ORM:
class Utilisateurs extends Model
{
public function as()
{
return $this->hasMany(A::class);
}
}
class A extends Model
{
public function utilisateur()
{
return $this->belongsTo(utilisateur::class);
}
public function b()
{
return $this->hasOne(B::class);
}
public function c()
{
return $this->hasOne(C::class);
}
}
class B extends Model
{
public function A()
{
return $this->belongsTo(A::class);
}
}
class C extends Model
{
public function A()
{
return $this->belongsTo(A::class);
}
}
所以,我的问题是是否有办法从用户表访问表B
我知道一种方法。
public function getB(int $id)
{
$user = Utilisateur::find($id);
$bs = array();
if($user){
$user->a()-each(function($item){
$b = $item->b()->first();
if($b){$bs[] = $b}
})
}
return $bs;
}
你知道另一种方法吗?
谢谢。
the post is resolved: the best way is to use the relationship : Has Many Through
最佳答案
就像thisiskelvin在评论中建议的那样,你可以看看hasManyThrough .
否则,您可以使用 Laravel 的 Collection methods如下:
$user = Utilisateurs::find($id);
$bs = $user->as()->map(function($a){
return $a->b()->first();
})->filter(function($b){
return $b;
})->toArray();
关于php - Laravel Eloquent 选择 1 :n to 1:1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719723/