在查询模型Laravel中使用accesor getAttribute

问题描述 投票:0回答:1

我有模特邮政,我有:

protected $appends = ['reviews_count'];

public static function boot()
{
    parent::boot();

    static::saved(function () {
        static::updateRanks();
    });
}

public function reviews() {
   return $this->hasMany(Review:class);
}

public static function updateRanks()
{
    DB::statement("UPDATE posts set `rank` = (SELECT FIND_IN_SET( CONCAT(points, '_', created_at), (SELECT GROUP_CONCAT( CONCAT(points, '_', created_at) ORDER BY points desc, created_at asc ) FROM (select * from posts) as posts_rankings)))");
}

public function getReviewsCountAttribute()
{
    return $this->reviews()->active()->count();
}

我需要在CONCAT(points, '_', created_at)添加一个reviews_count,然后再做ORDER BY points desc, reviews_count desc, created_at asc。我怎么能这样做?如果我添加,我会收到错误:unknown column reviews_count..

php laravel
1个回答
0
投票

当你添加一个附加属性时,每次你有一个雄辩的模式实例时,它都是一种魔法属性laravel。

但是,您的表模式实际上并没有qazxsw poi列。

您可以使用连接或子查询从SQL查询中获取该计数,如果这是您真正需要的。但是,使用原始语句具有此类更新功能并不是最佳实践。最终它变得难以阅读和调试。我建议你尽可能地构建它。别担心,我们都去过那里:)

© www.soinside.com 2019 - 2024. All rights reserved.