Gallery.php:Как получить принадлежность к модели, не делая новых запросов db в Laravel?
<?php
class Gallery extends Eloquent {
protected $visible = array(
'title',
'slug',
'id'
);
public function coverImage() {
return $this->belongsTo('Image', 'cover_image_id');
}
}
image.php:
<?php
class Image extends Eloquent {
protected $visible = array(
'id',
'url'
);
protected $appends = array(
'url'
);
public function gallery() {
return $this->hasOne('Gallery', 'cover_image_id');
}
public function getUrlAttribute() {
$slug = $this->gallery->slug;
return '/images/' . $slug . '/' . $slug . '-' . $this->id . '.jpg';
}
}
Что я хочу:
return Response::json(Gallery::all()->with('coverImage')->get());
И я хочу, чтобы каждый coverImage
иметь url
атрибут. У этого есть ... но Laravel запрашивает базу дат для каждой галереи, чтобы получить ее slug
, хотя у нее есть галереи из-за метода with()
.
Как этого избежать?
Просто мысли, но не один из галереи классов или изображений имеют hasOne отношения к другим, вместо оба они имеют принадлежность к? – Adimeus
@Adimeus Вы правы. Я отредактировал свой вопрос. К сожалению, это не решает проблему. Я «выбираю» из «галерей», где «galleries'.'cover_image_id' =? Limit 1» для каждой «галереи». – Craft