1

Eloquent を使用することの威力はわかりますが、自分のプロジェクトではまだ十分に活用できていません。2つのテーブルでこれを達成したい:

//output - LinkedIn
echo User::find(42)->SocialProvider->Name

ユーザー テーブルがあり、名前と API キー情報を含むソーシャル サイトのリストを含む SocialProvider テーブルがあります。

ユーザーのテーブルのレコード 42 には、SocialProvider テーブルの LinkedIn レコードの ID を持つ列「SocialProviderID」があります。

モデルクラスの関係を次のように定義しました

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

ありがとう

ジョン。

4

2 に答える 2

1

ああ、少しデバッグして理解しました。関係を間違って指定しました。

私のユーザーモデルでは、必要でした

class User extends Eloquent implements UserInterface, RemindableInterface {

    public function socialProvider() { 
        return $this->belongsTo('SocialProvider','SocialProviderID'); 
     }
于 2013-08-14T09:00:43.377 に答える