laravel - 关系查询NN在Laravel 6中生成空字段查询时出错
问题描述
当我尝试运行时出错$customer->competitorProduct()->where("product_id", 2)->get()
我得到一个错误不存在表中的字段“”,而在 Laravel 中检查查询类似于以下内容:
SELECT `competitor_product`.*,
`competitor_product_customer`.`id` AS `pivot_id`,
`competitor_product_customer`.`customer_id` AS `pivot_customer_id`,
`competitor_product_customer`.`competitor_product_id` AS `pivot_competitor_product_id`,
`competitor_product_customer`.`` AS `pivot_`,
`competitor_product_customer`.`status` AS `pivot_status`,
`competitor_product_customer`.`created_at` AS `pivot_created_at`,
`competitor_product_customer`.`updated_at` AS `pivot_updated_at`
FROM `competitor_product`
INNER JOIN `competitor_product_customer`
ON `competitor_product`.`id` = `competitor_product_customer`.``
WHERE `competitor_product_customer`.`customer_id` = 1
AND `product_id` = 2
我与一些表有 NN 关系:
DER Image
https://i.stack.imgur.com/Zh4pV.png
产品:完整代码
<?php
...
class Product extends Model
{
public function customers(): BelongsToMany
{
return $this->belongsToMany(Customer::class)
->using(CustomerProduct::class)
->as("customerProduct")
->withTimestamps()
->withPivot([
"id",
"customer_id",
"product_id",
...
]);
}
public function competitors(): BelongsToMany
{
return $this->belongsToMany(Competitor::class)
->using(CompetitorProduct::class)
->as("competitorProduct")
->withTimestamps()
->withPivot([
"id",
"product_id",
"competitor_id",
...
...
]);
}
}
客户:完整代码
<?php
...
class Customer extends Model
{
public function competitorProduct()
{
return $this->belongsToMany(CompetitorProduct::class)
->using(CompetitorProductCustomer::class)
->as('competitorProductCustomer')
->withTimestamps();
->withPivot([
'id',
'customer_id',
'competitor_product_id',
'status'
]);
}
public function products()
{
return $this->belongsToMany(Product::class)
->using(CustomerProduct::class)
->as('customerProduct')
->withPivot([
'id',
'customer_id',
'product_id',
...
]);
}
}
竞争对手:完整代码
<?php
...
class Competitor extends Model
{
public function products(): BelongsToMany
{
return $this->belongsToMany(Product::class)
->using(CompetitorProduct::class)
->as("competitorProduct")
->withTimestamps()
->withPivot([
"id",
"product_id",
"competitor_id",
...
]);
}
}
客户产品枢纽:完整代码
<?php
namespace App\Http\Model;
use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Support\Carbon;
class CustomerProduct extends Pivot
{
}
竞争对手产品枢纽:完整代码
<?php
...
class CompetitorProduct extends Pivot
{
public function customers()
{
return $this->belongsToMany(Customer::class)
->using(CompetitorProductCustomer::class)
->as('competitorProductCustomer')
->withTimestamps();
->withPivot([
'id',
'customer_id',
'competitor_product_id',
'status'
]);
}
}
竞争对手产品 x 客户产品 Pivot:完整代码
<?php
...
class CompetitorProductCustomer extends Pivot
{
}
我犯了一些错误,或银行关系或 Eloquent 关系
有什么解决办法吗?
解决方案
推荐阅读
- java - Datepicker 只用红色标记某些日子
- mysql - 如何在按组和日期排序后删除除一行之外的所有 MySQL 行?
- haskell - 获取/返回函数的类型
- objective-c - 内存泄漏 NSBlockOperation
- recursion - 使用主定理求解 $t(n)=t(\frac{n}{5})+t(\frac{n}{17}) +n$
- python - 基本的并行 python 程序在 Windows 上冻结
- java - HERE 映射 Android:RouteManager 类在哪里?
- mysql - laravel api 返回空值
- routes - Laravel 5.5 - 使用 Route::resource 在 URL 中传递变量?
- python-3.x - 如何在 Python 中求解三个二次微分方程?