由于在Codeigniter 4中接收到血型外键,我很难在患者表中显示血型描述。
错误发生在<td><?php echo $p['bt']['description']; ?></td>
显示ErrorException Undefined array key "bt"
PacientModel.php
个
class PacientModel extends Model
{
...
public function bt()
{
return $this->belongsTo(BloodTypeModel::class, 'blood_type_id');
}
}
字符串
BloodTypeModel.php
个
class BloodTypeModel extends Model
{
...
public function blood_type()
{
return $this->hasMany(PacientModel::class, 'blood_type_id');
}
}
型
PacientController.php
个
public function index()
{
$model = new PacientModel();
$blood_type = new BloodTypeModel();
$blood_types = $blood_type->findAll();
$blood_types = array_column($blood_types, null, 'id');
$pacients = [
'pacients' => $model->paginate(10),
'pager' => $model->pager,
'blood_types' => $blood_types,
];
return view('pacient/index', $pacients);
}
型
index.php
个
<?php foreach($pacients as $p): ?>
<tr>
<td><?php echo $p['bt']['description']; ?> </td>
</tr>
<?php endforeach; ?>
型
2条答案
按热度按时间kokeuurv1#
问题是
CodeIgniter 4
不支持即时加载,在将数据传递到视图之前,您需要手动连接表或Map控制器中的关系。字符串
index.php
型
uhry853o2#
字符串
另外,您可能希望立即加载血型关系,以避免N+1查询问题。
型
这将在单个查询中加载所有患者的血型关系。