我不想在调用它时修改对象,我正在看电话,修改会自动完成。
在控制器中,我有以下内容:
$candidate = Candidate::where('slug', '=', $slug)->first();
然后我这样做:
if (!is_null($candidate->social_profiles) && !empty($candidate->social_profiles)) {
$candidate->social_profiles = unserialize($candidate->social_profiles);
foreach ($candidate->social_profiles as $key => $value) {
$candidate->{$key} = $value;
}
$candidate->social_profiles = null;
}
现在,我正在寻找一种方法,在最后一部分,在自己的Candidate
模型中,这样每当检索到一个候选者时,它就会执行上面的代码,这样我就不必复制了上面的最后一部分,无论我在哪里找到候选人。
问题是,我不知道该怎么做。 $this
中的__construct
仅包含类中定义的数据,这基本上是一个空模型。还有什么?
答案 0 :(得分:0)
这可能是个人品味,但我会创建一个CandidateRespository类,它有一个方法findBySlug(或者你想称之为的任何方法):
public function findBySlug($slug)
{
$candidate = Candidate::where('slug', '=', $slug)->first();
if (!is_null($candidate->social_profiles) && !empty($candidate->social_profiles)) {
$candidate->social_profiles = unserialize($candidate->social_profiles);
foreach ($candidate->social_profiles as $key => $value) {
$candidate->{$key} = $value;
}
$candidate->social_profiles = null;
}
return $candidate;
}
使用依赖注入将存储库传递到控制器,然后使用:
调用它$candidate = $this->candidate->findBySlug($slug);
此处还有更多内容:http://laravel.com/docs/ioc& http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/
希望有所帮助。