【发布时间】:2014-04-11 17:51:40
【问题描述】:
TL;DR 已经走到了尽头。
我有很多 belongsTo() 模型可以有任意数量的记录,我正在尝试将它们绑定到一个编辑表单。我有以下创建表单元素的 foreach:
@foreach ($department->department_10 as $key => $value)
{{ Form::select(
'department_10['.(isset($value->pk_department_10)?$value->pk_department_10:0).']',
$department_10_opts,
(isset($value->department_10)?$value->department_10:''),
array('class'=>'form-control input-md department_10', 'placeholder'=>'Other Types of Service')) }}
@endforeach
由于可以有 0 条记录(行?)属于模型,为了简化我的 @foreach,我想创建模型的“空白”实例。此外,因为我将不得不处理大约 70 个这样的案例,所以我创建了一个函数来创建新的空白模型。这是功能(在我的控制器中没有更好的地方):
function mkBlankModel($parentModel, $newModel){
if(count($parentModel->$newModel) === 0){
$parentModel->$newModel[0] = new $newModel();
$parentModel->$newModel[0]->fk_department = $parentModel->pk_department;
$parentModel->$newModel[0]->$newModel = '';
}
return $parentModel;
}
当我运行它时,我没有收到任何错误,但我确实得到了意想不到的结果,我无法真正理解它们:
测试步骤 1) 在加载具有 2 个部门_10 的记录时查看编辑页面。它按预期工作;正确加载两个字段。
测试步骤 2) 在加载具有 0 个部门_10 的记录时查看编辑页面。页面加载但没有任何字段。因为显然我的功能不起作用,所以我通过转储dump($department->$department_10) 进行验证并确认了这一点。
测试步骤 3)我将 $parentModel->$newModel[0] 替换为 $parentModel->department_10[0],如下所示:
function mkBlankModel($parentModel, $newModel){
if(count($parentModel->$newModel) === 0){
$parentModel->department_10[0] = new $newModel();
$parentModel->department_10[0]->fk_department = $parentModel->pk_department;
$parentModel->department_10[0]->$newModel = '';
}
return $parentModel;
}
两种情况(有记录和没有记录)都可以正常工作。所以我的问题可能不是 Laravel 特有的,但我只是很好奇如何实现这一点。
TL;DR:
我正在尝试为父模型创建一个模型实例,如果不存在,那么我的@foreach 循环将在我的edit.blade.php's 表单中创建一个空白字段。如果我在创建模型时手动拼出模型的名称,我可以做到这一点,但由于我会经常这样做,我更愿意定义类,并用字符串填充它。
【问题讨论】:
标签: php class model laravel laravel-4