Laravel : hasOne Eloquent 关系
Laravel : hasOne Eloquent Relationships
我有一个交易table,其中hasOne
网站和hasOne
帐户负责人。但是 site 不一定需要绑定任何交易, accounthead 也可以独立而不绑定任何 交易.
基本上 Site 和 AccountHead 不一定 belongsTo
Transaction。
如何使用 eloquent 关系表示此场景。
我的 Site 和 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 是您要返回到视图的字段。
已解决。
这实际上不是一对一的关系,而是 Site 和 Transaction 之间的 hasMany
关系以及 AccountHead 和 Transaction.
我的新站点模型如下所示:
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');
}
}
我有一个交易table,其中hasOne
网站和hasOne
帐户负责人。但是 site 不一定需要绑定任何交易, accounthead 也可以独立而不绑定任何 交易.
基本上 Site 和 AccountHead 不一定 belongsTo
Transaction。
如何使用 eloquent 关系表示此场景。
我的 Site 和 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 是您要返回到视图的字段。
已解决。
这实际上不是一对一的关系,而是 Site 和 Transaction 之间的 hasMany
关系以及 AccountHead 和 Transaction.
我的新站点模型如下所示:
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');
}
}