Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用雄辩的语言使查询生成器语法变得更简单_Php_Laravel_Eloquent - Fatal编程技术网

Php 如何使用雄辩的语言使查询生成器语法变得更简单

Php 如何使用雄辩的语言使查询生成器语法变得更简单,php,laravel,eloquent,Php,Laravel,Eloquent,我有三张桌子,分别是laporan,laporankategori_anak,laporankategori_induk,看起来像这样 我想访问Kategorilapron_induk的数据,这是我的型号 拉波兰模型 <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Lapo

我有三张桌子,分别是laporan,laporankategori_anak,laporankategori_induk,看起来像这样


我想访问Kategorilapron_induk的数据,这是我的型号

拉波兰模型

<?php

namespace App\Models;

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

class Laporan extends Model
{
    use HasFactory;
    protected $table = 'laporan';

    public static function getLaporanUser(int $limit, $id_user)
    {
        $laporan = self::orderBy('waktu_dibuat', 'desc')->paginate($limit)->where('id_user', $id_user);
        return $laporan;
    }

    public function getUser()
    {
        return $this->belongsTo('App\Models\User', 'id_user');
    }
    
    public function getKategori()
    {
        return $this->belongsTo('App\Models\KategoriLaporanAnak', 'id_kategori');
    }
}


问题是,当我想显示表Kategorilapron_induk中的数据时,我使用的是查询生成器。
但我希望使用雄辩的语言,因此代码将更易于阅读。

你们知道如果我们在它上面使用雄辩的语法是怎样的吗?

不要使用
DB::table('laporan')->join()…
,只要使用
laporan::join()…
join()
使用雄辩的模型而不是生成器仍然有效,因此您的查询应该仍然可以工作。好的,谢谢,我找到了
<?php

namespace App\Models;

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

class KategoriLaporanAnak extends Model
{
    use HasFactory;
    
    protected $table = 'kategorilaporan_anak';
    protected $primaryKey = 'id_kategori';

    public function getKategoriInduk()
    {
        return $this->belongsTo('App\Models\KategoriLaporanInduk', 'id_induk');
    }

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

<?php

namespace App\Models;

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

class KategoriLaporanInduk extends Model
{
    use HasFactory;
    
    protected $table = 'kategorilaporan_induk';

    public $timestamps = false;

    protected $fillable = [
        'name',
    ];

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

public function show($id)
    {
        $laporan = DB::table('laporan')
                    ->join('kategorilaporan_anak', 'laporan.id_kategori', '=', 'kategorilaporan_anak.id_kategori')
                    ->join('kategorilaporan_induk', 'kategorilaporan_anak.id_induk', '=', 'kategorilaporan_induk.id')
                    ->select('*', 'kategorilaporan_induk.nama')->where('laporan.id', $id)
                    ->get();

        return view('laporan.show')->with('laporan', $laporan);
    }