我看到了使用雄辯的力量,但尚未在我的項目中很好地使用它。隨着兩個表我想實現這一點:一對一或一對多雄辯的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