Я пытаюсь получить обложки книг, принадлежащих автору. Все идет нормально. Но генерирует отдельный запрос для каждой книги и загрузка страницы занимает 2 секунды, я думаю, что я делаю что-то не так.
Я использую энергичную загрузку с моей таблицей комментариев (комментарий принадлежит пользователю), но, поскольку я использую полиморфные отношения с таблицей изображений (изображение может принадлежать разным типам других таблиц, таких как пользователь, вещь или группа, поэтому я могу не использовать внешние ключи в таблице изображений, так как это неправильное соглашение), на этот раз я не смог найти способ добиться того же.
Модель изображения
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Image extends Model
{
public function imageable()
{
return $this->morphTo();
}
}
Модель человека (Автор)
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Person extends Model {
public function books()
{
return $this->belongsToMany('\App\Models\Thing', 'person_thing');
}
Модель вещей (книги)
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Thing extends Model {
public function cover() {
return $this->morphMany('\App\Models\Image', 'imageable');
}
}
Контроллер
$findBooks = Person::with(array('books' => function($query)
{
$query->groupBy('original_name');
}))->find(52957);
$allbooks = $findBooks->books;
return view('frontend.index')->with('allbooks', $allbooks)
}
Текущий вид
@foreach($allbooks as $allBooks)
@foreach($allBooks->cover as $value)
<img class="hund" src="{{$value->link}}" alt="">
@endforeach
@endforeach
array('books.cover' => function...
. Единственное, в чем я не уверен, так это в том, относится ли$query->groupBy(...)
к каждой обложке или к каждой книге. - person AgmLauncher   schedule 22.09.2015$allbooks = $findBooks->books->load('cover');
Не уверен, чтоgroupBy
повлияет и на это, но думаю. - person Aken Roberts   schedule 22.09.2015