繁体   English   中英

在 Laravel 中使用有很多通过关系

[英]Using has many through relationship in Laravel

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

承包商表

id 
company 

住宅表

id
contractor_id

买家表

id
residential_id

这是模型

承包商.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');
    }
}

如果我执行这种代码,它将是 $contractor->buyer。 虽然我希望它是 $buyer->contractor->company

买家.php

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

<?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);
    }
}

买家控制器.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>

根据上面的查看代码,我已经为Residence做了关系但是我无法为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM