【问题标题】:Laravel Eloquent Relationship JoinLaravel Eloquent 关系加入
【发布时间】:2022-01-25 11:22:31
【问题描述】:

购物车:-

id product_name price

评分:-

id product_id user_id

我有这两张桌子。我已经在产品模型中定义了一种关系,以获得特定产品的评级。代码的输出是这样的:-

"data": [
        {
            "id": 4200,
            "name": "Anti gravity Beer Cake",
            "modal": "",
            "price": 1800,
            "discount": 0,
            "quantity": 20,
            "discription": "Good Quality Product!",
            "p_status": "active",
            "m_id": 664,
            "product_link": "anti-gravity-beer-cake--6040c2b317894",
            "product_picture": " ",
            "weight": 0,
            "weight_type": "Kilogram",
            "rating": {
                "id": 4,
                "u_id": 1,
                "product_id": 4200,
                "subject": null,
                "ratings": 4,
                "review": null,
                "type": "rating"
            }
        },
{
            "id": 4200,
            "name": "Anti gravity Beer Cake",
            "modal": "",
            "price": 1800,
            "discount": 0,
            "quantity": 20,
            "discription": "Good Quality Product!",
            "p_status": "active",
            "m_id": 664,
            "product_link": "anti-gravity-beer-cake--6040c2b317894",
            "product_picture": " ",
            "weight": 0,
            "weight_type": "Kilogram",
            "rating": {
                "id": 5,
                "u_id": 1,
                "product_id": 4200,
                "subject": null,
                "ratings": 5,
                "review": null,
                "type": "rating"
            }
        }

但我希望产品首先获得高评价。我怎么做? 产品型号:-

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class product extends Model
{
    use HasFactory;
    
    public function rating(){
        return $this->hasOne(ratings_and_review::class)->orderBy('ratings','DESC');
    }
}

【问题讨论】:

  • 你能用“ratings”代替“ratings”吗?

标签: php laravel-8


【解决方案1】:

试试这个....

public function rating(){
      return $this->hasOne(ratings_and_review::class)->sortByDesc('rating','ratings');
}

【讨论】:

    【解决方案2】:

    您可以在从DB中获取数据后尝试对集合进行排序,例如:

    $products = Product::with('rating')->get()->sortByDesc('rating.ratings');
    

    你可以参考 laravel 上的合集文档: https://laravel.com/docs/8.x/collections

    【讨论】:

    • 不客气@AKSHAYKUMAR
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2018-02-09
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2016-11-21
    相关资源
    最近更新 更多