使用在拉拉威尔有许多贯穿关系



如何从承包商表中获取或显示公司列以将其放入刀片中?我已经尝试使用hasManyThrough关系来解决这个问题,但它不起作用,因为我引用的所有示例都没有相同的流程。

承包商表

id 
company 

居民表

id
contractor_id

买家表

id
residential_id

这是型号

Contractor.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Contractor extends Model
{
protected $table = 'contractors';
protected $fillable = ['user_id','company','address','phone_no','email','avatar'];
public function residential()
{
return $this->hasMany(Residential::class);
}
public function buyers()
{
return $this->hasManyThrough('AppBuyer', 'AppResidential');
}
public function buyer()
{
return $this->hasOneThrough('AppBuyer', 'AppResidential');
}
}

如果我做这种代码,它将是$contractor->买主虽然我希望它是$buyer->承包商->公司

Buyer.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Buyer extends Model
{
protected $fillable = ['buyer_id', 'name', 'address', 'phone_no', 'email', 'avatar', 'user_id', 'residential_id'];
public function residential()
{
return $this->belongsTo(Residential::class);
}
}

Residential.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Residential extends Model
{
protected $fillable = ['name','res_code','postcode','city','state','image','contractor_id'];
public function contractor()
{
return $this->belongsTo(Contractor::class);
}
public function buyer()
{
return $this->hasMany(Buyer::class);
}
}

BuyerController.php

public function index(Request $request)
{
if(Auth::user()->role == 'buyer')
{
$buyers = Buyer::where('user_id', '=', Auth::id())->first();
return view('buyers.index',['buyer'=>$buyers]);
}

这是我正在处理的视图,没有循环,因为这是买家登录的配置文件。

index.blade.php

<h4 class="heading"><b><center>Buyer's Details</center></b></h4>
<ul class="list-unstyled list-justify">
<li><b>Buyer ID: </b>{{$buyer->buyer_id}}</li>
<li><b>Name: </b>{{$buyer->name}}</li>
<li><b>Address: </b>{{$buyer->address}}</li>
<li><b>Residence: </b>{{$buyer->residential->name}}</li>
<li><b>Phone Number: </b>{{$buyer->phone_no}}</li>
<li><b>Email: </b>{{$buyer->email}}</li>
<li><b>Contractor: </b>{{$buyer->contractor->company}}</li>
</ul>

根据上述视图代码,我已经为住宅建立了关系:但我无法为Contractor:建立关系。我希望有人能帮助我。

尝试这个

那么你可以做

$buyer->contractor->company

$buyer->residential->contractor->company

您已将belongsTo添加到2型中

控制器内

$buyers = Buyer::where('user_id', '=', Auth::id())->first();
return view('buyers.index',['buyer'=>$buyers]);

然后调用刀片文件

$buyers->residential->contractor->company

最新更新