我看到了使用雄辩的力量,但尚未在我的项目中很好地使用它。随着两个表我想实现这一点:一对一或一对多雄辩的ORM关系?
//output - LinkedIn
echo User::find(42)->SocialProvider->Name
我有一个用户表,我有一个SocialProvider表,社交网站与他们的名字和API密钥信息的列表。
我用户表中的记录42有一个'SocialProviderID'列,其中包含SocialProvider表中LinkedIn记录的ID。
我已经定义模型类的关系如下
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'); }
和
class SocialProvider extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'dbo_SocialProvider';
public function user() { return $this->belongsTo('User','SocialProviderID'); }
但查询和结果都没有执行,因为我想。
有没有人有想法?
我使用的是MSSQL,但在我比较熟悉MYSQL,我想这个ORM方案执行加入这样的:
SELECT * FROM dbo_RegisteredUser
LEFT JOIN (dbo_SocialProvider)
ON (dboRegisteredUser.SocialProviderID=dbo_SocialProvider.id)
WHERE dbo_RegisteredUser.UserID=42
感谢
乔恩。
嗯,我想也许这个问题的原因是,我没有正确定义的关系。每个用户只有一个社交提供者(LinkedIn,Facebook),因此外键约束是user.SocialProviderID,并且是直接映射到SocialProvider.id。因此,SocialProvider应该与用户没有关系。只有用户应该引用一个社会提供者(用user.SocialProviderID) – HowApped
那么我看到的第一件事情就是蝙蝠,你是不是扩展了雄辩.....在第一堂课....你'只是扩展BaseModel .....但我来自Laravel3,所以它可能完全在L4中有差异。 – KyleK
是的,这是一个有效的点。但是从基础模型扩展雄辩。如果我直接扩展雄辩,我仍然会得到一个空洞的结果。 thx虽然.. – HowApped