我正在尝试获取某位作者的书籍封面。到目前为止,一切都很好。但它为每本书生成一个单独的查询,并且需要 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');
}
}
Controller
$findBooks = Person::with(array('books' => function($query)
{
$query->groupBy('original_name');
}))->find(52957);
$allbooks = $findBooks->books;
return view('frontend.index')->with('allbooks', $allbooks)
}
当前 View
@foreach($allbooks as $allBooks)
@foreach($allBooks->cover as $value)
<img class="hund" src="{{$value->link}}" alt="">
@endforeach
@endforeach
最佳答案
$query->with([
'child' => function ($q) {
$q->where(’someCol', ’someVal’); //constraint on child
},'child.grandchild' => function ($q) {
$q->where(‘someOtherCol’, ‘someOtherVal’); //constraint on grandchild
}
]);
关于Eloquent 急切加载多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32679874/