简介:
我使用laravel 5.6
我在很多关系查询中遇到问题。
我有2种型号:订单和购物车
代码:
购物车型号:
class Cart extends Model
{
public function order()
{
return $this->belongsToMany(Order::class);
}
}
订单模型:
class Order extends Model
{
public function carts(){
return $this->belongsToMany(Cart::class);
}
}
购物车迁移:
public function up()
{
Schema::create('carts', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->nullable();
$table->integer('price')->nullable();
$table->integer('pass')->default(0);
});
}
如何获取其pass
字段位于Cart = 1
中的订单?
谢谢!
答案 0 :(得分:4)
首先,由于您的购物车有很多订单,因此该关系应以s命名为“ orders”。
您只显示了购物车迁移,所以我无法猜测,但是Laravel也希望您创建一个“购物车”数据透视表。
如果我理解得很好,您可以按照以下步骤做:
Order::whereHas('carts', function ($query) {
$query->where('pass', 1);
})->get();
您可以在Laravel文档here中了解有关Eloquent的多对多关系的更多信息。
答案 1 :(得分:1)
尝试这样
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* Get all of the owning commentable models.
*/
public function commentable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get all of the post's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
class Video extends Model
{
/**
* Get all of the video's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
//在控制器中这样访问 $ post = App \ Post :: find(1);
foreach ($post->comments as $comment) {
//
}
此链接可以帮助您, 在这种情况下,https://laravel.com/docs/5.7/eloquent-relationships#polymorphic-relations。希望对您有帮助。