Laravel 雄辩的ORM关系是一对一还是一对多?
我看到了使用雄辩的力量,但还没有在我的项目中很好地使用它。我希望通过两个表实现这一点:Laravel 雄辩的ORM关系是一对一还是一对多?,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我看到了使用雄辩的力量,但还没有在我的项目中很好地使用它。我希望通过两个表实现这一点: //output - LinkedIn echo User::find(42)->SocialProvider->Name 我有一个用户表和一个SocialProvider表,其中列出了社交网站的名称和api密钥信息 我的用户表中的记录42有一列“SocialProviderID”,其id为我的SocialProvider表中的LinkedIn记录 我在模型类中定义了如下关系 class Use
//output - LinkedIn
echo User::find(42)->SocialProvider->Name
我有一个用户表和一个SocialProvider表,其中列出了社交网站的名称和api密钥信息
我的用户表中的记录42有一列“SocialProviderID”,其id为我的SocialProvider表中的LinkedIn记录
我在模型类中定义了如下关系
class User extends BaseModel implements UserInterface, RemindableInterface {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'dbo_RegisteredUser';
protected $primaryKey = "UserID";
public function SocialProvider() { return $this->hasOne('SocialProvider','id'); }
及
但是查询和结果并没有像我希望的那样执行
有人有什么想法吗
我正在使用MSSQL,但在我更熟悉的MYSQL中,我希望这个ORM场景执行如下连接:
SELECT * FROM dbo_RegisteredUser
LEFT JOIN (dbo_SocialProvider)
ON (dboRegisteredUser.SocialProviderID=dbo_SocialProvider.id)
WHERE dbo_RegisteredUser.UserID=42
谢谢
Jon.好吧……关系使用问题模型的ID……而且您没有在任何地方引用实际用户 您需要在social Provider表中有一个collumn,用于存储
用户id
然后在你的功能中
public function SocialProvider() { return $this->hasOne('SocialProvider','user_id'); }
而且
public function user() { return $this->belongsTo('User'); }
嗯…关系使用问题模型的ID…并且您没有在任何地方引用实际用户 您需要在social Provider表中有一个collumn,用于存储
用户id
然后在你的功能中
public function SocialProvider() { return $this->hasOne('SocialProvider','user_id'); }
而且
public function user() { return $this->belongsTo('User'); }
啊,我通过一点调试就明白了。我错误地指定了关系 在我的用户模型中,我需要
class User extends Eloquent implements UserInterface, RemindableInterface {
public function socialProvider() {
return $this->belongsTo('SocialProvider','SocialProviderID');
}
啊,我通过一点调试就明白了。我错误地指定了关系 在我的用户模型中,我需要
class User extends Eloquent implements UserInterface, RemindableInterface {
public function socialProvider() {
return $this->belongsTo('SocialProvider','SocialProviderID');
}
嗯,我想问题的原因可能是我没有正确定义这种关系。每个用户只有一个社交提供商(LinkedIn、Facebook),因此外键约束为user.SocialProviderID,这是到SocialProvider.id的直接映射。也就是说,SocialProvider应该与用户没有关系。只有用户应该引用一个社交提供商(使用user.SocialProviderID),那么我马上看到的第一件事是,你没有扩展雄辩的……在第一节课中……你只是扩展了基本模型……但我来自Laravel3,所以在L4中可能完全不同。是的,这是一个有效的观点。但从基本模型我扩展了雄辩。如果我直接扩展雄辩,我仍然得到一个空的结果。thx虽然…我相信这是倒退
public function socialProvider(){return$this->belongsTo('User','SocialProviderID');}
和public function User(){return$this->hasOne('socialProvider');}
Hmm,我想问题的原因可能是我没有正确定义关系。每个用户只有一个社交提供商(LinkedIn、Facebook),因此外键约束为user.SocialProviderID,这是到SocialProvider.id的直接映射。也就是说,SocialProvider应该与用户没有关系。只有用户应该引用一个社交提供商(使用user.SocialProviderID),那么我马上看到的第一件事是,你没有扩展雄辩的……在第一节课中……你只是扩展了基本模型……但我来自Laravel3,所以在L4中可能完全不同。是的,这是一个有效的观点。但从基本模型我扩展了雄辩。如果我直接扩展雄辩,我仍然得到一个空的结果。thx虽然…我相信这是倒退public function socialProvider(){return$this->belongsTo('User','SocialProviderID');}
和public function User(){return$this->hasOne('socialProvider');}