我正在尝试将 Laravel 8 项目中的关系转换为雄辩的 Orm。这是一个简单的关系,但我不知道为什么当我尝试过滤查询时,我在第二个表中得到空值。
我的模型 Cita:(英语预约)
class Cita extends Model {
use HasFactory;
protected $table = 'citas';
public function user() {
return $this->BelongsTo(User::class, 'id_vete', 'id');
}
public function evento() {
return $this->belongsTo(Evento::class, 'id_evento', 'id');
}
My Model Evento:(英语活动)
class Evento extends Model {
use HasFactory;
protected $table = 'eventos';
public function user(){
return $this->belongsTo(User::class, 'id_usu', 'id');
}
public function citas() {
return $this->hasMany(Cita::class, 'id_evento', 'id');
}
我原来的 CitaController 工作没有问题:
public function index(){
$idVete = session('user_id'); // Get the ID of the current User
$citas = Cita::where('id_vete', $idVete)
->join('eventos', 'eventos.id', '=', 'citas.id_evento')
->join('clientes', 'clientes.dni', '=', 'citas.dni_cliente')
->select('citas.id AS cita_id', 'citas.dia', 'citas.hora', 'citas.descripcion', 'citas.active',
'clientes.first_nm', 'clientes.last_nm', 'clientes.dni', 'clientes.email', 'clientes.phone',
'servicios.id', 'servicios.nm_evento')
->get();
我基本上想要这个:
$citas = Cita::with(['evento', 'user'])->get();
结果: [ { “id”:3, “id_vete”:2, “id_evento”:2, "dni_cliente": "65495321", “直径”:“2023-03-16”, "时间": "19:00:00", ETC... “甚至”: { “id”:2, “id_usu”:2, ETC... }, “用户”:{ “id”:2, “名称”:“管理员”, ETC... }
但是当我尝试放置一些过滤器加上 with() 方法时
$citas = Cita::with(['evento', 'user'])->where('id_vete', $idVete)->get();
我得到: []
尝试使用这个
$citas = Cita::with('user')->with(['evento' => function($q) use($idVete) {
$q->where('id', $idVete);
}])->get();
或者
$citas = Cita::with(['evento', 'user'])->where('evento.id_vete', $idVete)->get();