【问题标题】:Display column data based from foreign id on another table在另一个表上显示基于外国 id 的列数据
【发布时间】:2021-07-13 05:35:05
【问题描述】:

我想根据 produks 表中的 id_kategori 将 kategori 表中的 kategori_name 显示到我的视图中,但使用 Eloquent 或 Query Builder 时仍然出现错误

这是我的产品迁移

Schema::create('produks', function (Blueprint $table) {
    $table->id();
    $table->string('product_name');
    $table->foreignId('id_kategori')->references('id')->on('kategoris');
    $table->timestamps();
}); 

这是类别迁移

Schema::create('kategoris', function (Blueprint $table) {
    $table->id();
    $table->string('kategori_name');
    $table->timestamps();
});

这是我的尝试:

$joinkategori = DB::table('produks')->where('id_kategori')->where(Kategori::select('kategori_name')->first());
return view('admin/createproduk', compact('joinkategori'));

但还是会出错

未定义属性:Illuminate\Database\MySqlConnection::$nama_kategori(查看:D:\oricraft\resources\views\admin\createproduk.blade.php)

如何使用 eloquent 或查询生成器来实现这一点?谢谢你

【问题讨论】:

    标签: php sql eloquent laravel-7


    【解决方案1】:

    先创建两个模型

    Productproduks

    Kategori for kategoris(根据已创建的问题)

    所以在产品模型中添加关系

    public function category(){
    
      return $this->belongTo(Kategori::class,'id_kategori','id')
    }
    

    然后n个查询

    $joinkategori =Product::with('category')->get()
    

    $joinkategori =Product::with('category')->has('category')->get()
    

    【讨论】:

    • 结果只是空先生,这是视图中的 foreach:` @foreach($joinkategori as $kategori) {{$kategori -> nama_kategori}} @endforeach `
    • 数据表中的 nama_kategori coumn 在哪里?
    • 看起来应该是 {{$kategori ->category->kategori_name}}
    • 那是一个错字,但它完美地工作,谢谢。
    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多