我有三个数据库表
CREATE TABLE `tblprojecttype` (
`ProjectTypeID` int(11) NOT NULL,
`ProjectType` varchar(30) NOT NULL,
`Description` varchar(500) NOT NULL,
`IsActive` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `tblprojecttypecurrencyprice` (
`ProjectTypeCurrencyID` int(11) NOT NULL,
`CurrencyID` int(11) NOT NULL,
`ProjectTypeID` int(11) NOT NULL,
`Price` decimal(10,0) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `tblcurrency` (
`CurrencyID` int(11) NOT NULL,
`Currency` varchar(100) NOT NULL,
`IsActive` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
型号
class Currency_Model extends Model
{
protected $table = "tblcurrency";
protected $primaryKey = "CurrencyID";
public $timestamps = false;
}
class ProjectType_Model extends Model
{
protected $table = "tblprojecttype";
protected $primaryKey = "ProjectTypeID";
public $timestamps = false;
public function projecttypecurrencyprice()
{
return $this->hasOne(''App'Models'ProjectTypeCurrencyPrice_Model',
"ProjectTypeID");
}
}
class ProjectTypeCurrencyPrice_Model extends Model
{
protected $table = "tblprojecttypecurrencyprice";
protected $primaryKey = "ProjectTypeCurrencyID";
public $timestamps = false;
public function Currency()
{
return $this->hasOne(''App'Models'Currency_Model', "CurrencyID");
}
}
存在CurrencyID
关系和ProjectTypeID
关系
我在尝试什么
在我的Laravel 5.1代码中,我试图实现下面的sql语句,这样我就可以为每个ProjectType record
获得projecttypecurrencyprice records
。最后,它还应该为每个projecttypecurrencyprice
记录显示来自currency Table
的记录
$ProjectTypes = 'App'Models'project'ProjectType'ProjectType_Model
::with("projecttypecurrencyprice")
->with("projecttypecurrencyprice.Currency")
->get();
问题出在哪里
我无法获取每个项目的货币记录类型货币价格记录。
对于ProjectTypeCurrencyPrice_Model
,您应该以这种方式更改Currency
关系:
public function Currency()
{
return $this->belongsTo(''App'Models'Currency_Model', "CurrencyID");
}
因为在tblprojecttypecurrencyprice
中有CurrencyId
列,而在tblcurrency
中没有与ProjectTypeCurrencyPrice_Model
的任何连接。获取数据而不是:
$ProjectTypes = 'App'Models'project'ProjectType'ProjectType_Model
::with("projecttypecurrencyprice")
->with("projecttypecurrencyprice.Currency")
->get();
可以省略第一个with
:
$ProjectTypes = 'App'Models'project'ProjectType'ProjectType_Model
::with("projecttypecurrencyprice.Currency")
->get();
顺便说一句,如果你开始这个项目,你应该考虑数据库结构的变化,并阅读PHP中的PSR——如果你真的不必使用ProjectTypeCurrencyPrice_Model
作为你的模型名称,MySQL 中的ProjectTypeID
列也是如此