![](/img/trans.png)
[英]How to get data for one to many relationship using Eloquent in Laravel?
[英]Accessing all data using Laravel Eloquent relationship(one to many/Inverse)
我有两个型号,即医生 model 和医生室 model。 我使用 eloquent 一对多关系来满足拥有多个房间的医生的需求。 这是我的医生 model 的代码
class Doctors extends Model
{
protected $primaryKey = 'doctor_id';
public $timestamps = false;
protected $fillable = [
'first_name',
'last_name',
'specialization_id_fk',
];
public function specializations()
{
return $this->belongsTo('App\Specializations', 'specialization_id_fk');
}
public function doctorRooms()
{
return $this->hasMany('App\DoctorRooms', 'doctor_id_fk', 'doctor_id');
}
}
这是我的医生房间 model
class DoctorRooms extends Model
{
protected $primaryKey = 'doctor_room_id';
public $timestamps = false;
protected $fillable = [
'room',
'doctor_id_fk',
];
public function doctorsInfo()
{
return $this->belongsTo('App\Doctors', 'doctor_id_fk', 'doctor_id');
}
}
当我尝试访问我的 doctorRooms model 中的数据时,我不断收到“此集合实例上不存在属性 [房间]”。 这是我的医生代码 controller
class DoctorsController extends Controller
{
public function index()
{
$doctors = Doctors::all();
$rooms = DoctorRooms::all();
foreach($doctors as $doctor) {
echo $doctor->doctorRooms->room;
}
}
}
这是我将 $doctors 回显为 JSON 时的结果。
[
{
"doctor_id":1,
"first_name":"Aracely",
"last_name":"Ullrich",
"specialization_id_fk":12,
"doctor_rooms":[
{
"doctor_room_id":1,
"room":"151",
"doctor_id_fk":1
},
{
"doctor_room_id":3,
"room":"152",
"doctor_id_fk":1
}
]
},
{
"doctor_id":2,
"first_name":"Marjolaine",
"last_name":"Sipes",
"specialization_id_fk":21,
"doctor_rooms":[
{
"doctor_room_id":2,
"room":"131",
"doctor_id_fk":2
}
]
}
]
我可以使用 laravel 查询生成器来做到这一点,但为了 MVC,我坚持使用 laravel eloquent Z8B8A92C27C4DD79. 提前致谢!
您希望单个 model 的room
属性而不是包含许多这些模型的集合上的属性。
foreach ($doctors as $doctor) {
foreach ($doctor->doctorRooms as $room) {
echo $room->room;
}
}
$doctors
是一个集合,每个医生都有一个 DoctorRoom 的集合来迭代。
不要忘记预先加载关系以从迭代中删除额外的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.