Laravel Eloquent 关系加入
Laravel Eloquent Relationship Join
购物车:-
id
product_name
price
评分:-
id
product_id
user_id
我有这两个table。我已经在产品模型中定义了一个关系来获得特定产品的评级。代码的输出是这样的:-
"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');
}
}
试试这个....
public function rating(){
return $this->hasOne(ratings_and_review::class)->sortByDesc('rating','ratings');
}
您可以尝试从数据库中获取数据后对 collection 进行排序,例如:
$products = Product::with('rating')->get()->sortByDesc('rating.ratings');
您可以参考collection关于laravel的文档:
https://laravel.com/docs/8.x/collections
购物车:-
id | product_name | price |
---|
评分:-
id | product_id | user_id |
---|
我有这两个table。我已经在产品模型中定义了一个关系来获得特定产品的评级。代码的输出是这样的:-
"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');
}
}
试试这个....
public function rating(){
return $this->hasOne(ratings_and_review::class)->sortByDesc('rating','ratings');
}
您可以尝试从数据库中获取数据后对 collection 进行排序,例如:
$products = Product::with('rating')->get()->sortByDesc('rating.ratings');
您可以参考collection关于laravel的文档: https://laravel.com/docs/8.x/collections