Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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_Relationship - Fatal编程技术网

Php 在Laravel中,使用有许多贯穿关系

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 这就

如何从承包商表中获取或显示公司列以将其放入刀片中?我已经尝试使用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
这就是模型

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))