laravel - 语法错误或访问冲突:1066 不是唯一的表/别名:'
问题描述
我正在 laravel 中编写一个应用程序,它显示此错误 SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'medicals' (SQL: select * from patients
left join medicals
on medicals
. patients_id
= patients
. id
left join medicals
on medicals
. trx_id
= patient_referral
. trx_id
)
return Patients::where(function ($q) use ($startdate, $enddate, $id) {
$q->where("patient_referral.trx_id", $id);
})
->leftJoin("medicals", "medicals.patients_id", "=", "patients.id")
->leftJoin("medicals", "medicals.trx_id", "=", "patient_referral.trx_id")
->get();
医疗模型
class Medicals extends Model
{
protected $guarded = [];
public function patients()
{
return $this->belongsTo(Patients::class, "id", "patients_id");
}
public function tests()
{
return $this->belongsTo(Tests::class);
}
}
患者模型
类患者扩展模型 { protected $guarded = [];
public function medicals()
{
return $this->hasMany(Medicals::class);
}
public function patient_referral()
{
return $this->hasMany(PatientReferral::class);
}
}
患者转诊模型
类 PatientReferral 扩展模型 { protected $guarded = [];
protected $table = "patient_referral";
public function patients()
{
return $this->belongsTo(Patients::class);
}
}
解决方案
您尝试连接medicals
表两次,因此在这种情况下,您需要为每个实例提供唯一别名,并在连接子句中指定列的别名,以便数据库知道表中要在过滤器中使用的确切列,例如
Patients::where(function ($q) use ($startdate, $enddate, $id) {
$q->where("patient_referral.trx_id", $id);
})
->leftJoin("medicals as a", "a.patients_id", "=", "patients.id")
->leftJoin("medicals as b", "b.trx_id", "=", "patient_referral.trx_id")
->get();
推荐阅读
- cplex - raise PulpSolverError("PuLP: Error while trying to execute "+self.path) + CPLEX
- amazon-web-services - 如何在不使用 `--as=system:anonymous` 的模拟的情况下将 kubectl 与 system:anonymous 帐户一起使用?
- ios - 无法在动画块内限制子视图的动画
- java - Android 的蓝牙打印无法按预期工作
- php - 字符串不匹配
- python - Python根据条件选择变量
- python - Python:如何为每个用户分组?
- qt5 - Qt5 QMessageBox 不能在按钮之间制表符
- javascript - 如何通过承诺包装 useQuery 钩子
- sql-server - 在 VB.NET 中自动生成字母数字