Php 在Laravel中,使用有许多贯穿关系
如何从承包商表中获取或显示公司列以将其放入刀片中?我已经尝试使用hasManyThrough关系解决了这个问题,但它不起作用,因为我提到的所有示例都没有相同的流程 承包商表Php 在Laravel中,使用有许多贯穿关系,php,laravel,relationship,Php,Laravel,Relationship,如何从承包商表中获取或显示公司列以将其放入刀片中?我已经尝试使用hasManyThrough关系解决了这个问题,但它不起作用,因为我提到的所有示例都没有相同的流程 承包商表 id company id contractor_id id residential_id 居民表 id company id contractor_id id residential_id 买家表 id company id contractor_id id residential_id 这就
id
company
id
contractor_id
id
residential_id
居民表
id
company
id
contractor_id
id
residential_id
买家表
id
company
id
contractor_id
id
residential_id
这就是模型
Contractor.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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('App\Buyer', 'App\Residential');
}
public function buyer()
{
return $this->hasOneThrough('App\Buyer', 'App\Residential');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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);
}
}
public function index(Request $request)
{
if(Auth::user()->role == 'buyer')
{
$buyers = Buyer::where('user_id', '=', Auth::id())->first();
return view('buyers.index',['buyer'=>$buyers]);
}
<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>
这是我正在处理的视图,没有循环,因为这是买家登录的配置文件
index.blade.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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('App\Buyer', 'App\Residential');
}
public function buyer()
{
return $this->hasOneThrough('App\Buyer', 'App\Residential');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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);
}
}
public function index(Request $request)
{
if(Auth::user()->role == 'buyer')
{
$buyers = Buyer::where('user_id', '=', Auth::id())->first();
return view('buyers.index',['buyer'=>$buyers]);
}
<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>
买方详细信息
- 买方ID:{{$Buyer->Buyer_ID}
- 名称:{{$buyer->Name}
- 地址:{{$buyer->Address}
- 住所:{{$buyer->住所->姓名}
- 电话号码:{{$买家->电话号码}
- 电子邮件:{{$buyer->Email}
- 承包商:{{$buyer->Contractor->company}
基于上述视图代码,我已经为住宅:建立了关系,但我无法为承包商建立关系:我希望有人能帮助我。试试这个
那你就可以做了
$buyer->contractor->company
到
您已经在控制器中的2个型号中添加了以下内容
$buyers = Buyer::where('user_id', '=', Auth::id())->first();
return view('buyers.index',['buyer'=>$buyers]);
然后调用刀片文件
$buyers->residential->contractor->company
检查这里我做了这里提到的我得到了这个错误。调用模型[App\Buyer]上未定义的关系[contractor]。当前,这是在my contractor.php``public function residential(){return$this->hasMany(residential::class);}``Buyer.php``public function residential(){return$this->belongsTo(residential::class);}``Residential.php``public function contractor(){return$this->belongsTo(contractor::class);}public function buyer(){return$this->hasMany(buyer::class);}``上一个是正确的。我忘了删除控制器中的某些内容,非常抱歉。非常感谢你帮助我@IrdinaZulkeflee好的,我正在更新并标记这个答案,然后是我得到的这个错误。SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“residentials.buyer_id”(SQL:选择承包商
*,住宅
作为住宅
承包商
内部连接住宅
上的住宅
住宅
id
承包商住宅住宅其中住宅
住宅
<(7))