【问题标题】:How to get the "catagory name" in Laravel?如何在 Laravel 中获取“类别名称”?
【发布时间】:2021-04-19 11:38:42
【问题描述】:

如何让产品表中的“类别名称”不显示为“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');
    }
}

分类表

产品表

产品控制器 >>>>在我看来可能是我的问题,但不太确定。

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

【问题讨论】:

  • 我不明白你的问题。

标签: laravel datatable model eloquent-relationship


【解决方案1】:

使用您的关系传递其他模型

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

其中说的是 $produks,你可以访问它

$produk->produk->nama;

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

$produk->kategori->nama;

【讨论】:

  • 非常感谢,终于明白你的意思了。 :)
【解决方案2】:

你应该使用:

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

我建议使用 camelCase 作为方法名。我不确定 Datatables 将如何处理这种情况。

【讨论】:

    【解决方案3】:

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

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

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

    要从那里访问关系的属性,很简单

    $result->Produk->catagory_name
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 1970-01-01
      • 2021-07-25
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多