我的应用中有一个简单的关系Post x Files(一个帖子包含多个文件,而一个文件仅与一个帖子相关联)。为了使事情更加敏捷,只要不更改,我就将帖子存储在缓存中,因此无需再次查询数据库。我注意到的问题是,只有帖子存储在缓存中,而不是文件(我想问题是因为我查询它们的方式)。我的代码是:
au VimLeave * :!clear
获取帖子的功能
class Post extends Model
{
public function files(){
return $this->hasMany('Ibbr\File');
}
}
我还尝试了添加public static function pegaPostsBoard($nomeBoard)
{
$chave = 'posts_board';
if(Cache::has($chave))
return Cache::get($chave);
$posts = Post::orderBy('updated_at', 'desc')->where('board', $nomeBoard)->where('lead_id', null)->paginate(10);
Cache::forever($chave, $posts); //I "forget" the cache whenever the post is changed
return $posts;
}
,然后再将其添加到缓存中,但是没有用。我怎么注意到文件没有被缓存?好吧,我重置了数据库,因此它清除了所有行,并且我注意到,如果我在页面上按F5键,则这些帖子仍然存在(因为它们已被缓存),但没有它们的文件。因此,我的问题是如何以也存储文件的方式查询它?
答案 0 :(得分:2)
使用with
将关系附加到查询结果
$posts = Post::with('files')
->orderBy('updated_at', 'desc')
->where('board', $nomeBoard)
->where('lead_id', null)
->paginate(10);