【发布时间】:2021-10-25 09:32:12
【问题描述】:
我有 3 个相互连接的表
account_receivables
- account_receivable_id (PK)
- ...
account_receivable_details
- account_receivable_id (PK FK)
- order_id (PK FK)
订单
- order_id (PK)
- ...
之后,我想建立这样的关系
class AccountReceivable extends Model
{
protected $fillable = [
'account_receivable_id','event_id','account_receivable_date','account_receivable_description','account_receivable_amount','xendit_id','xendit_status', 'xendit_expiry_date','account_receivable_percentage'
];
protected $primaryKey = 'account_receivable_id';
public $incrementing = false;
public function accountReceivableDetail()
{
return $this->hasMany(AccountReceivableDetail::class, 'account_receivable_id', 'account_receivable_id');
}
}
但是当我这样调用 AccountReceivable 时,它会返回一个空的 accountReceivableDetail 数组
public function getRiwayatById(Request $request, $id){
$riwayat = AccountReceivable::where([
'account_receivable_id' => $id
])->with('accountReceivableDetail')->first();
return $riwayat;
}
你知道为什么当我实际上在表中有数据时它返回一个空数组吗?
【问题讨论】:
-
检查关系中的外键和所有者键。
-
@KaleemShoukat 但我放了相同的密钥(密钥具有相同的名称)
-
@SanMargo 据我所知,如果一个 AccountReceivable 有很多 AccountReceivableDetails,那么 AccountReceivableDetails 中的 account_receivable_id 列不能有多个 id,因为该列是一个 PK。如果您想要这样的关系,请为 AccountReceivableDetail 创建一个 PK id,例如 account_receivable_detail_id。 CMIIW
-
@adhiskara 我认为它是由复合键调用的?所以我们有两列作为主键
标签: laravel eloquent relationship laravel-8 has-many