小编hor*_*rse的帖子

如何在mysql查询中解决"不在GROUP BY中"错误

我有两个模型:posts并且likings具有一对多的关系(所以,一个帖子有很多喜欢).Likings模型还有一个isActive显示喜欢是主动还是被动的领域.

我想获得(排序)前5个帖子,这些帖子已经收到了最大的"活跃"喜欢(只有喜欢其isActive字段为true的帖子才会被考虑).

这是查询:

select posts.*, count(likings.id) as likes_count from 'posts'
left join 'likings' on 'likings'.'post_id' = 'posts'.'id' and 'likings'.'isActive' = 1
group by 'posts'.'id'
order by 'likes_count' desc 
limit 5
Run Code Online (Sandbox Code Playgroud)

这是由这个laravel查询产生的:

Post::selectRaw('posts.*, count(likes.id) as likes_count')
    ->leftJoin('likes', function ($join) {
        $join->on('likes.post_id', '=', 'posts.id')
             ->where('likes.is_active', '=', 1);
    })
    ->groupBy('posts.id')
    ->orderBy('likes_count', 'desc')
    ->take(5)
    ->get();
Run Code Online (Sandbox Code Playgroud)

这是错误:

SQLSTATE[42000]: Syntax error or access violation: 1055
'database.posts.user_id' isn't in GROUP BY
Run Code Online (Sandbox Code Playgroud)

这里,posts.user_id也是posts表格的一个字段,显示了帖子的所有者.

我该如何解决这个错误?似乎改变mysql配置(可能是删除ONLY_FULL_GROUP_BY模式)是不合逻辑的,但查询中的变化最小.

php mysql laravel

8
推荐指数
1
解决办法
1万
查看次数

为什么 Cache::lock() 在 Laravel 7 中返回 false?

我的框架是 Laravel 7,缓存驱动程序是 Memcached。我想执行原子缓存获取/编辑/放置。为此我使用Cache::lock()但它似乎不起作用。返回$lock->get()false(见下文)。我该如何解决这个问题?

Fort 测试,我重新加载 Homestead,并仅运行下面的代码。并且锁定永远不会发生。是否有可能Cache::has()破坏锁定机制?

if (Cache::store('memcached')->has('post_' . $post_id)) {
    $lock = Cache::lock('post_' . $post_id, 10);
    Log::info('checkpoint 1'); // comes here

    if ($lock->get()) {
        Log::info('checkpoint 2'); // but not here.
        $post_data = Cache::store('memcached')->get('post_' . $post_id);
        ... // updating $post_data..
        Cache::put('post_' . $post_id, $post_data, 5 * 60);
        $lock->release();
    }
} else {
        Cache::store('memcached')->put('post_' . $post_id, $initial, 5 * 60);
}
Run Code Online (Sandbox Code Playgroud)

laravel laravel-6 laravel-7

5
推荐指数
1
解决办法
2392
查看次数

如何在Laravel中呈现Web和移动视图

每个路由有两个刀片文件,一个用于Web,一个用于移动设备.我不知道处理请求的正确方法.这是一个正确的方法:

在每个控制器功能结束时(对于每个请求)

If it is mobile (via Jenssegers)
    View::make(file_mobile.blade.php)
else
    View::make(file_web.blade.php)
Run Code Online (Sandbox Code Playgroud)

你会建议什么?

php routing laravel blade

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

从 Laravel 项目的角度来看,工匠和作曲家有什么区别?

我不知道composer之前laravel,我遇到了他们在同一时间。所以,我无法区分它们的命令,但记住它们。

是什么区别php artisan,并composer.phar和他们同时运行命令?

任何人都可以帮助我解决这个问题吗?谢谢..

php laravel composer-php

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

如何在获取路由中将默认参数传递给laravel控制器

我有这样一条路线:

Route::get('category/{id}/{date?}', array('as' => 'category/date', 'uses' => 'Controller@getCategory'));
Run Code Online (Sandbox Code Playgroud)

我想在调用“ /”根路由时使用默认参数运行@getCategory。因此,如果调用了“ /”路由,则getCategory函数应以id = 1和date = 2015-12-18运行。

我应该怎么做?

laravel laravel-4 laravel-routing

0
推荐指数
2
解决办法
1万
查看次数