如何在 Laravel 中获取 "catagory name"?

How to get the "catagory name" in Laravel?

如何让“类别名称”在产品中显示 table 而不是“category_id”?

我已经尝试为此组合任何解决方案。但是还是解决不了这个问题。 我很想听听这里的大师们的其他建议。

类别模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Kategori extends Model
{
    use HasFactory;
    protected $casts = [
        'updated_at' => 'datetime:d/m/Y, H:i:s'
    ];

    public function Kategori()
    {
        return $this->hasMany('App\Models\Produk');
    }
}

产品型号

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;


class Produk extends Model
{
    use HasFactory;
    protected $casts = [
        'updated_at' => 'datetime:d/m/Y, H:i:s'
    ];

    public function Produk()
    {
        return $this->belongsTo('App\Models\Kategori', 'kategori_id');
    }
}

类别Table

产品Table

Product Controller >>>> 在我看来可能是我在这里的概率,但不太确定。

<?php

namespace App\Http\Controllers;

use App\Models\Produk;
use RealRashid\SweetAlert\Facades\Alert;
use Yajra\Datatables\DataTables;
use Illuminate\Http\Request;

class ProdukController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function json(){
        return Datatables::of(Produk::all())->make(true);
    }
    public function index(){
        return view('back.produk.show');
    }
}

你应该使用:

 public function json(){
        return Datatables::of(Produk::with('Kategori')->all())->make(true);
    }

我建议对方法名称使用驼峰命名法。我不确定 Datatables 将如何处理这种情况。

在您的 ProdukController 中,您需要传递以下代码。

$result = Produk::with('Produk')->get();

当你 dd($result); 时,你应该在 relations 数组属性中看到相关模型。

要从那里访问关系的属性,只需

$result->Produk->catagory_name

使用您的关系传递另一个模型

public function json(){
    return Datatables::of(Produk::with('produk')->get())->make(true);
}

它的名字是 $produks,你可以访问它

$produk->produk->nama;

作为旁注,请将您的关系命名为其他模型的名称。 例如,在 Kategori class 中,与 Produk 的关系应命名为 produks(这是一个 hasMany 关系),而不是 Kategori。同样,在 Produk class 中,与 Kategori 的关系被命名为 kategori(),您可以从上面的答案中访问它

$produk->kategori->nama;