我有一对一的关系,我想在 laravel 工作。
我正在尝试使用user
和alert
表。
Use
r表的主键为id
,其中的另一个ID称为id_custom
。
在Alerts
表中,我将id_custom
作为主键。
以下是用户模型中的关系:
public function alerts()
{
return $this->hasOne('Alerts', 'id_custom');
}
这是警报模型:
class Alerts extends Eloquent
{
/**
*
*
* The database table used by the model.
*
*
*
* @var string
*
*/
protected $table = 'alerts';
protected $primaryKey = 'id_custom';
/**
*
*
* The attributes excluded from the model's JSON form.
*
*
*
* @var array
*
*/
protected $hidden = array();
public $timestamps = false;
}
在视图中我尝试Auth::user()->alerts->profit
(其中profit
是Alerts
表中的一列。
我做错了什么?
答案 0 :(得分:6)
您的hasOne
方法目前正在user_id
表格中查找alerts
。您需要显式设置您要查找的外键和本地键。
return $this->hasOne('Model', 'foreign_key', 'local_key');
在你的实例中,如果是
return $this->hasOne('Alerts', 'id_custom', 'id');
如果您将User
属性id_custom
更改为alert_id
,您会为自己做得更整洁。
然后,您可以将User.php模型中的方法更改为alert
并执行:
public function alert()
{
return $this->hasOne('Alerts');
}