Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день!
Есть модель Page
protected $fillable = ['sysname', 'content'];
public function vars() {
return $this->hasMany('App\PageVar', 'page_id');
}
public function getVar($var) {
$page_var = $this->hasMany('App\PageVar', 'page_id')->where('var', $var)->first();
return ($page_var ? $page_var->value : null);
}
и связанная с ней PageVar
protected $fillable = ['page_id', 'var', 'value'];
public static $rules = ['var' => 'sysname'];
public function page() {
return $this->belongsTo('App\Page');
}
Служат для того чтобы управлять, контентом на статичных страницах. В pages основное содержание, в page_vars мелкие фразы на странице.
Обращаюсь к этому в шаблонах так:
{{$page->getVar('services')}}
Но в этом случае не отрабатывает
with('vars')
И для каждого getVar, выполняется запрос в базу.
Вообще getVar создал потому что в случае
{{$page->vars->where('var', 'services')->first()->value}}
если services не создана, то выскакивает ошибка.
Помогите, как это правильно организовать?
Не в сети
Загружай страницы сразу с pageVar:
Page::with('vars')->find($id);
Потом:
{{ $page->vars->where('var', 'services')->first()->value }}
Изменено AlexeyMezenin (10.01.2017 16:09:27)
Не в сети
Загружай страницы сразу с pageVar:
Page::with('vars')->find($id);
Потом:
{{ $page->vars->where('var', 'services')->first()->value }}
Вначале так и пробовал, но в этом случае если services не существует(а по контексту такое возможно), тогда будет ошибка
Trying to get property of non-object
Не в сети
Если не все var заполнены, значит нужно добавить проверку:
{{ empty($page->vars->where('var', 'services')->first()) ? 'Empty' : $page->vars->where('var', 'services')->first()->value }}
Изменено AlexeyMezenin (10.01.2017 16:11:18)
Не в сети
Страницы 1