小编Yas*_*vov的帖子

限制Laravel的关系

我有一个模型Post,它有一个hasMany('Comments')关系.我想通过评论关系获取所有帖子,但只有每个帖子的最新评论.并且因为有成千上万的帖子每个都有成千上万的评论,所以由于性能问题(即加载每个帖子的所有评论然后执行$ post-> comments [0] - > value),这样的选项是不可能的:

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')
});
Run Code Online (Sandbox Code Playgroud)

我也不能这样做:

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')->limit(1)
});
Run Code Online (Sandbox Code Playgroud)

因为这不起作用.

我完全相信我不是唯一一个遇到这个问题的人,我确实设法找到了一些"尝试解决方案"但不是一个稳定的工作代码示例.有人可以帮忙吗?

php relationships laravel eloquent laravel-4

6
推荐指数
1
解决办法
1990
查看次数

Port StdClass数据到Model

问题如下:

1)我在数据库中的几个表中有数百万行,因此使用Eloquent效率不高,因为我还有多个关系.在这种情况下,解决方案是编写自定义DB :: raw()选择和连接以有效地完成任务.如您所知,这将返回StdClass.

2)我有4-5个模型,我需要使用相当冗长的方法,因此最好的解决方案是为StdClass的每一行创建这些模型的实例,然后使用这些方法.

在OOP模式方面,是否存在将StdClass中的信息"移植"到模型中的已知"最佳实践"?你们怎么解决这个问题?我会接受任何建议,我准备甚至重组代码.

PS Laravel v4.2

model fluent stdclass laravel eloquent

3
推荐指数
1
解决办法
1249
查看次数

Laravel缓存原始查询

我有一个包含许多原始查询的存储库,例如:

DB::select(DB::raw(
             'SELECT stuffFields
              FROM stuffTable
              A NUMBER OF COMPLEX JOINS, ETC'
          ));
Run Code Online (Sandbox Code Playgroud)

我想缓存此查询的结果,但我遇到了一些问题:

1)我不能 - >记住(60),因为Fluent查询不是用table()方法启动的.

2)我做不到

DB::table('stuffTable')
          ->select(DB::raw(
             'stuffFields
              A NUMBER OF COMPLEX JOINS, ETC'
          ))->get();
Run Code Online (Sandbox Code Playgroud)

因为有这些连接,并且在查询结束时(连接之后)会附加FROM子句,这会引发SQL语法错误.

我也无法在join()方法中显示连接,因为它们包含嵌套查询(有没有办法执行rawJoin()...我找不到类似的东西?).

任何人都可以建议一种方法来重组Fluent调用或缓存此类原始查询的常用方法吗?

php mysql caching laravel laravel-4

2
推荐指数
2
解决办法
3622
查看次数

标签 统计

laravel ×3

eloquent ×2

laravel-4 ×2

php ×2

caching ×1

fluent ×1

model ×1

mysql ×1

relationships ×1

stdclass ×1