Php 对于同一模型,采用适当的方法实现多个hasOne
我有一个Php 对于同一模型,采用适当的方法实现多个hasOne,php,orm,laravel,laravel-4,eloquent,Php,Orm,Laravel,Laravel 4,Eloquent,我有一个车厢表,其结构如下: foreign: subsidiary_id string: type string: postal_code string: name string: internal_reference decimal: expedition_rate 以及具有以下体系结构的子公司表: foreign: subsidiary_id string: type string: postal_code string: name string: internal_referenc
车厢
表,其结构如下:
foreign: subsidiary_id
string: type
string: postal_code
string: name
string: internal_reference
decimal: expedition_rate
以及具有以下体系结构的子公司表:
foreign: subsidiary_id
string: type
string: postal_code
string: name
string: internal_reference
decimal: expedition_rate
现在,我将在子系统控制器中调整我的存储功能,以便它将自动为新的子系统创建两个车厢
我知道,在子公司创建之后,我可以很容易地进行个人创建步骤,但我想知道,如何使用关系方式
我所知道的是,在我的Subsidiary.php
模型中,我可以创建如下两个函数:
public function carriageExport()
{
return $this->hasOne('Carriage');
}
public function carriageImport()
{
return $this->hasOne('Carriage');
}
其中careexport
将是carees.type='export'
,而careeimport
将是carees.type='import'
所以
我不知道是否正确地定义了关系函数。你怎么认为?我错过了什么,对吗?这是什么
你愿意坚持使用非关系型版本吗
在这种情况下,作用域是解决问题的方法:
class Subsidiary extends Eloquent {
public function carriage()
{
return $this->hasOne('Carriage');
}
}
class Carriage extends Eloquent {
public function scopeImport($query)
{
return $query->whereType('import');
}
public function scopeExport($query)
{
return $query->whereType('export');
}
}
然后你可以:
echo Subsidiary::find(1)->carriage()->import()->first()->postal_code;