在Laravel 5.3中,Eloquent如何在where条件下检索第3个表数据

时间:2016-11-28 07:43:34

标签: php laravel eloquent

我有3个模型(每个模型分别与一个表相关联),它们彼此关联,我已经附加了下面的表格结构 enter image description here

模特是,
doctor_profile_master

相关联的医生模型
<?php

namespace App\TblModels;

use Illuminate\Database\Eloquent\Model;

class Doctor extends Model
{
/**
 * @var string
 */
protected $table = 'DOCTOR_PROFILE_MASTER';

/**
 * @var string
 */
protected $primaryKey = 'doctor_profile_master_id';

/**
 * @var array
 */
protected $fillable = ['doctor_id', 'user_master_id', 'doctor_first_name', 'doctor_last_name', 'doctor_isactive'];


/**
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function hospitalDoctorAssociateMasters(){

    return $this->hasMany('App\TblModels\HospitalDoctorAssociateMaster','doctor_profile_master_id');
}

}

HospitalDoctorAssociateMasterhospital_doctor_associate_master

相关联的模型
<?php

namespace App\TblModels;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;

class HospitalDoctorAssociateMaster extends Model
{
/**
 * @var string
 */
protected $table = 'HOSPITAL_DOCTOR_ASSOCIATE_MASTER';

/**
 * @var string
 */
protected $primaryKey = 'hospital_doctor_associate_master_id';

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function doctor(){

    return $this->belongsTo('App\TblModels\Doctor','doctor_profile_master_id');
}

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function hospital(){

    return $this->belongsTo('App\TblModels\Hospital','hospital_profile_master_id');
}
}

HospitalDoctorRecurringSchedulehospital_doctor_recurring_schedule

相关联的模型
<?php

namespace App\TblModels;

use Illuminate\Database\Eloquent\Model;

class HospitalDoctorRecurringSchedule extends Model
{
/**
 * @var string
 */
protected $table = 'HOSPITAL_DOCTOR_RECURRING_SCH_MASTER';

/**
 * @var string
 */
protected $primaryKey = 'hospital_doctor_recurring_sch_master_id';



public function hospitalDoctorAssociateMaster(){

    return $this->belongsTo('App\TblModels\HospitalDoctorAssociateMaster','hospital_doctor_associate_master_id');
}

}

我想做的是,
如何使用hospital_doctor_recurring_sch_master(doctor_profile_master)检索specific doctor_id表格数据

我尝试了一些方法,但无法检索这些值。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

$hospitalDoctors = HospitalDoctorRecurringSchedule::with(['hospitalDoctorAssociateMaster', 'hospitalDoctorAssociateMaster.doctor', 'hospitalDoctorAssociateMaster.hospital'])->all();

按相关表格中的字段搜索:

$hospitalDoctors = HospitalDoctorRecurringSchedule::with([
                      'hospitalDoctorAssociateMaster', 
                      'hospitalDoctorAssociateMaster.doctor', 
                      'hospitalDoctorAssociateMaster.hospital'])
                      ->whereHas('hospitalDoctorAssociateMaster.doctor', function ($query) use ($doctorId) {
    $query->where('doctor_id', '=', $doctorId);
 })
->all();

hospitalDoctorAssociateMaster.hospital

定义医院模型并尝试