Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel显示多对多关系项_Php_Laravel - Fatal编程技术网

Php Laravel显示多对多关系项

Php Laravel显示多对多关系项,php,laravel,Php,Laravel,我在Laravel中建立了多对多关系,并用数据填充了数据库表。关系设置如下所示 users.php --------- public function houses() { return $this->belongsToMany('App\House') ->withTimestamps(); } house.php --------- public function users() { return $

我在Laravel中建立了多对多关系,并用数据填充了数据库表。关系设置如下所示

users.php
---------
   public function houses()
    {
        return $this->belongsToMany('App\House')
        ->withTimestamps();
    }

house.php
---------
public function users()
    {
        return $this->belongsToMany('App\User')
        ->withTimestamps();
    }
$houses = House::with('App\User')->all();

foreach ($houses as $house) {
    echo 'Found House';
}
在my/house/show.blade.php中,我试图显示保存的连接,如下所示

users.php
---------
   public function houses()
    {
        return $this->belongsToMany('App\House')
        ->withTimestamps();
    }

house.php
---------
public function users()
    {
        return $this->belongsToMany('App\User')
        ->withTimestamps();
    }
$houses = House::with('App\User')->all();

foreach ($houses as $house) {
    echo 'Found House';
}

如果说找不到$house,那我就错了。我哪里出错了?

您应该在
中用以下方法指出关系:

$houses = House::with('users')->get();
@foreach ($houses as $house)
    {{ $house->addres }}
@endforeach
$houses = House::whereHas('users', function ($query) {
    $query->where('name', 'some user name'); // to add some conditions on the user :)
})->get(); 
还有一件事,最好在控制器中获取房屋并将其传递给视图:

$houses = House::with('users')->get();
return view('someView')->withHouses($houses);
在视图中,这样做:

$houses = House::with('users')->get();
@foreach ($houses as $house)
    {{ $house->addres }}
@endforeach
$houses = House::whereHas('users', function ($query) {
    $query->where('name', 'some user name'); // to add some conditions on the user :)
})->get(); 

要仅获取房屋,用户可以尝试以下方法:

$houses = House::has('users')->get();
要对用户添加一些条件,您可以这样做:

$houses = House::with('users')->get();
@foreach ($houses as $house)
    {{ $house->addres }}
@endforeach
$houses = House::whereHas('users', function ($query) {
    $query->where('name', 'some user name'); // to add some conditions on the user :)
})->get(); 
你应该试试这个:

$houses = House::with('users')->get();

foreach ($houses as $house) {
    echo 'Found House';
}

在控制器中:

use House;

$houses = House::with('users')->get();
return view('someView',compact('houses'));
@foreach ($houses as $house)
    {{ $house->name }}
@endforeach
在刀片文件中:

use House;

$houses = House::with('users')->get();
return view('someView',compact('houses'));
@foreach ($houses as $house)
    {{ $house->name }}
@endforeach

为什么在blade中而不是在controller中?它应该是
House::with('users')
。在controller中而不是在blade中这样做更好吗?我想它应该是->get();最后。每当我尝试在控制器中设置它时,我都会得到-调用未定义的方法illumb\Database\Query\Builder::all()@fightstarr20立即完成检查我使用的
get
not
all
现在我在模型[App\House]上调用了未定义的关系[App\User]。让我们来看看。