首页 > 解决方案 > Laravel 7单行回显belongsToMany关系

问题描述

我正在尝试显示表中brand_id列的值brands。到目前为止,这是我所做的:

汽车模型

use App\Brand;

class Car extends Model
{
    public function brands(){
        return $this->belongsToMany(Brand::class);
     }
}

品牌型号

use App\Car;

class Brand extends Model
{
    protected $fillable = [
        'brand_name'
    ];

    public function cars(){
        return $this->hasMany(Car::class);
    }
}

陈列室控制器

use App\Car;

class ShowroomController extends Controller
{
    public function details($name){
        $data = Car::where('car_name' , '=', $name)->first();

        if ($data == null){
            return redirect(route('index'));
        }else{
            return view('showroom')->with('detail', $data);
        }
    }
}

陈列室视图

@if (isset($detail))
  {{ $detail }} 
  {{ $detail->brands->brand_name }} //this doesn't work
@endif

数据库

品牌表:

+----+------------+
| id | brand_name |
+----+------------+
|  1 | Brand1     | 
|  2 | Brand2     | 
+----+------------+

汽车表:

+----+----------+----------+
| id | car_name | brand_id |
+----+----------+----------+
|  1 | Car      |        1 |
+----+----------+----------+

我在这一点上迷路了。这是处理belongstomany和hasmany关系的正确方法吗?谢谢。

标签: phplaravelviewrelationshiphas-and-belongs-to-many

解决方案


改变
return $this->belongsToMany(Brand::class);在 return $this->belongsTo(Brand::class);汽车模型上

还将名称函数重命名为brand. 因为汽车只有单一品牌 之后你可以做$detail->brand->brand_name


推荐阅读