我有一个交易表,hasOne
网站和hasOne
帐户头。但网站并不一定需要绑定到任何交易,帐户头也可以独立,不受任何交易的约束。
基本上网站和 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
答案 0 :(得分:0)
首先,两个表都需要transation_id
字段来添加转换记录ID。这可以是nullable()
,应该是unique()
,以确保没有其他记录具有相同的transation_id
。
...
$table->integer('transation_id')->nullable()->unique();
...
在您的视图中,您需要从关系中指定所需的数据。 E.g。
<td>{{str_limit($transaction->accounthead->accountname,47)}}</td>
<td>{{str_limit($transaction->site->name,47)}}</td>
accountname / name是您想要返回视图的字段。
答案 1 :(得分:0)
<强>解决。强>
它实际上并不是一对一的关系,而是网站和交易之间的hasMany
关系以及 AccountHead 和交易。
我的新网站模型如下:
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');
}
}