以下是我的控制器代码,以获取具有条件的订单列表适用于连接表
$orders = Order::whereHas('order_carpets', function($q){
$q->where('carpent_no', '1345');
})->get();
模型代码看起来像这样
class Order extends Model
{
protected $table = 'orders';
public function order_carpets()
{
return $this->belongsToMany(Order_carpet::class, 'orders', 'id', 'order_carpet_id');
}
public function customers()
{
return $this->belongsToMany(Customer::class, 'orders', 'id', 'customer_id');
}
}
class Order_carpet extends Model
{
public function orders()
{
return $this->hasMany(Order::class);
}
}
我现在得到的结果是表Order
的所有数据答案 0 :(得分:0)
orders
表出现在主查询和子查询中,没有别名
所以where orders.id = orders.id
两次引用同一个表,所以总是如此。
问题是order_carpets
关系。它实际上是BelongsTo
关系:
public function order_carpets()
{
return $this->belongsTo(Order_carpet::class, 'order_carpet_id');
}
customers
关系也是如此:
public function customers()
{
return $this->belongsTo(Customer::class, 'customer_id');
}
您应该将它们重命名为order_carpet
和customer
。