[英]Laravel : hasOne Eloquent Relationships
我有一個交易表,它hasOne
網站和hasOne
accounthead。 但是該站點並不一定要求綁定任何交易,並且客戶頭也可以獨立存在而不受任何交易的約束。
基本上, 站點和AccountHead不一定belongsTo
交易 。
我該如何使用雄辯的關系來表示這種情況。
我是否在網站和AccountHead模型中缺少需要做的任何事情?
這是我已經做的:
我的交易模型:
class Transaction extends Model
{
public function site()
{
return $this->hasOne('App\Site');
}
public function accounthead()
{
return $this->hasOne('App\AccountHead');
}
}
我的網站模型
class Site extends Model
{
protected $fillable = [
'name',
'slug',
'location',
'description'
];
}
我的AccountHead模型
class AccountHead extends Model
{
protected $fillable = [
'slug',
'accountname'
];
}
我需要能夠在我的視圖中顯示每個交易的網站和客戶頭。
在我看來:
@forelse($transactions as $transaction)
<td>{{str_limit($transaction->accounthead,47)}}</td>
<td>{{str_limit($transaction->site,47)}}</td>
@endforelse
首先,兩個表都需要一個transation_id
字段來添加事務記錄ID。 這可以是nullable()
並且應該是unique()
,以確保沒有其他記錄具有相同的transation_id
。
...
$table->integer('transation_id')->nullable()->unique();
...
在您看來,您需要從關系中指定所需的數據。 例如
<td>{{str_limit($transaction->accounthead->accountname,47)}}</td>
<td>{{str_limit($transaction->site->name,47)}}</td>
accountname / name是要返回到視圖的字段。
解決了。
它實際上不是一對一的關系,而是站點和交易與AccountHead和交易之間的hasMany
關系。
我的新站點模型如下所示:
class Site extends Model
{
protected $fillable = [
'name',
'slug',
'location',
'description'
];
public function transactions()
{
return $this->hasMany('App\Transaction','site_id');
}
}
我的新AccountHead模型如下所示:
class AccountHead extends Model
{
protected $fillable = [
'slug',
'accountname'
];
public function transactions()
{
return $this->hasMany('App\Transaction','accounthead_id');
}
}
我的新交易模型如下所示:
class Transaction extends Model
{
public function site()
{
return $this->belongsTo('App\Site','id');
}
public function accounthead()
{
return $this->belongsTo('App\AccountHead','id');
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.