我在 Laravel 中建立了多对多关系,并在数据库表中填充了数据。关系设置看起来像这样......
users.php
---------
public function houses()
{
return $this->belongsToMany('App\House')
->withTimestamps();
}
house.php
---------
public function users()
{
return $this->belongsToMany('App\User')
->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)
在我的 /house/show.blade.php 我试图像这样显示保存的连接......
$houses = House::with('App\User')->all();
foreach ($houses as $house) {
echo 'Found House';
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误,说找不到 $houses。我哪里错了?
您应该在with方法中指出这种关系,如下所示:
$houses = House::with('users')->get();
Run Code Online (Sandbox Code Playgroud)
还有一件事,最好在控制器中获取房屋并将它们传递给视图:
$houses = House::with('users')->get();
return view('someView')->withHouses($houses);
Run Code Online (Sandbox Code Playgroud)
在视图中这样做:
@foreach ($houses as $house)
{{ $house->addres }}
@endforeach
Run Code Online (Sandbox Code Playgroud)
要仅获得房屋,用户可以尝试以下操作:
$houses = House::has('users')->get();
Run Code Online (Sandbox Code Playgroud)
并为用户添加一些条件,您可以这样做:
$houses = House::whereHas('users', function ($query) {
$query->where('name', 'some user name'); // to add some conditions on the user :)
})->get();
Run Code Online (Sandbox Code Playgroud)