Php 如何使用雄辩的语言使查询生成器语法变得更简单
我有三张桌子,分别是laporan,laporankategori_anak,laporankategori_induk,看起来像这样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
我想访问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);
}