【发布时间】:2015-10-14 00:58:25
【问题描述】:
我有一个模型“Page”,它具有一对多关系“PageCustomField”(就像 WordPress 的自定义字段概念)。
此自定义字段模型有两个字段,键和值。我想做的是能够在 Twig 模板中执行以下操作,其中 page 是父 Page 模型,custom 是自定义字段的集合,email 是 key 查询自定义字段关系。输出将是 PageCustomField 模型的 value 字段。
{{ page.custom.email }}
我通过在页面模型中添加以下内容来实现这一点:
public $custom = array();
public function extractCustomFields()
{
foreach ($this->customFields as $customField) {
$this->custom[$customField->key] = $customField->value;
}
return $this;
}
调用如下:
$page = Page::where('slug', 'home')->firstOrFail()->extractCustomFields();
我更希望有一个自动执行此操作的回调,例如在静态启动方法中。比如……
public static function boot()
{
parent::boot();
// Extract PageCustomField relations into 'custom' array
static::fetched(function($model) {
$model->extractCustomFields();
});
}
查看 Illuminate\Database\Eloquent\Model 方法,我看不到可以实现此目的的回调,但可以做到吗?我可以重写 firstOrFail() 方法,但宁愿不这样做。
【问题讨论】:
标签: php laravel laravel-4 eloquent