php - 如何使用 Eloquent 使查询构建器语法变得更简单
问题描述
我有 3 个名为 laporan、laporrankategori_anak、laporankategori_induk 的表看起来像这样
我想从 kategorilaporan_induk 访问数据,这是我的模型
Laporan models
<?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');
}
}
分类LaporanAnak 模型
<?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');
}
}
分类LaporanInduk 模型
<?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');
}
}
这是我在 LaporanController 上的显示功能
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);
}
问题是,当我想显示表 kategorilaporan_induk 中的数据时,我正在使用查询生成器。
但我想使用 Eloquent,所以代码更容易阅读。
如果我们使用 eloquent,你们知道语法如何吗?
解决方案
推荐阅读
- azure - How do I make Azure Pipelines aware of the YAML file already in the repo?
- r - R:dplyr 可以按组计算百分比吗?
- rxjs - 在 rxjs 中链接两个依赖的 observable
- javascript - 从字符串函数数组中删除标点符号
- python - 在 ubuntu 上导入 theano 时出现编译错误
- ios - 通过搜索栏快速搜索本地 HTML 文件的内容并在 tableview 中显示结果
- javascript - Array#sort() 和 Object.entries().sort() 的不同排序顺序
- mysql - MySQL 触发器中的“INSTEAD OF”,从 SQL Server 转换而来
- python - pip安装pyarrow后在jupyter notebook中导入pyarrow出错
- javascript - Shopify 脚本标签未呈现