Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 雄辩的ORM关系是一对一还是一对多?_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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');}