【问题标题】:How to fetch field "nama" from Category Table in Product Table (Laravel 8)如何从产品表中的类别表中获取字段“nama”(Laravel 8)
【发布时间】:2021-07-15 06:18:34
【问题描述】:

我真的需要解决这个问题。我正在使用 Laravel 8。

我正在尝试从 kategoris (category) 表中获取 nama (name) 字段并将其显示在 produks (产品)表。

最后用JS代码查看Blade

@extends('back.index')

@section('content')
    <main>
        <div class="container-fluid">
            <h1 class="mt-4">Produk</h1>
            <ol class="breadcrumb mb-4">
                <li class="breadcrumb-item"><a href={{ route('home') }}>Dashboard</a></li>
                <li class="breadcrumb-item active">Produk</li>
            </ol>
            <div class="card mb-4">
                <div class="card-body">
                    DataTables is a third party plugin that is used to generate the demo table below. For more information about DataTables, please visit the
                    <a target="_blank" href="https://datatables.net/">official DataTables documentation</a>
                    .
                </div>
            </div>
            <div class="card mb-4">
                <div class="card-header">
                    <i class="fas fa-table mr-1"></i>
                    DataTable Example
                    @auth
                    <a href="{{ route('produks.create') }}" class="btn btn-info float-right">Tambah Produk</a>
                    @endauth

                </div>
                <div class="card-body">
                    <div class="table-responsive">
                        <table class="table table-bordered" id="produks-table" width="100%" cellspacing="0">
                            <thead>
                                <tr>
                                    <th>Kode</th>
                                    <th>Nama</th>
                                    <th>Kategori</th>
                                    <th>Updated At</th>
                                </tr>
                            </thead>
                            <tfoot>
                                <tr>
                                    <th>Kode</th>
                                    <th>Nama</th>
                                    <th>Kategori</th>
                                    <th>Updated At</th>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </main>
@endsection

@push('scripts')
    <script>
    $(function() {
        $('#produks-table').DataTable({
            processing: true,
            serverSide: true,
            ajax: 'produk/json',
            columns: [
                { data: 'kode', name: 'kode' },
                { data: 'nama', name: 'nama',
                    fnCreatedCell: function (nTd, sData, oData, iRow, iCol) {
                        $(nTd).html("<a href='/kategoris/"+oData.id+"'>"+oData.nama+"</a>");
                    }
                },
                { data: 'kategori', name: 'kategori.nama'},
                { data: 'updated_at', name: 'updated_at'},
            ]
        });
    });
    </script>
@endpush

我已经寻找了几天的解决方案,但仍然收到此错误消息。

产品型号

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(Kategori::class, 'kategori_id');
    }
}

类别模型

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(Produk::class);
    }
}

产品控制器

namespace App\Http\Controllers;

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

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

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

    public function index()
    {
        return view('back.produk.show');
    }
}

【问题讨论】:

    标签: laravel model-view-controller datatables relationship


    【解决方案1】:

    我在命名模型函数时错了。

    类别模型

    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 Produk() //Here
        {
            return $this->hasMany(Produk::class);
        }
    }
    

    产品型号

    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 Kategori() //Here
        {
            return $this->belongsTo(Kategori::class, 'kategori_id');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2021-10-08
      • 2021-03-10
      相关资源
      最近更新 更多