Php Laravel模型透视表1-1关系应为1-M
我的Laravel模型有一个问题,我试图使用我数据库中已有的透视表,这是我正在使用的表的布局 客户 工作 客户工作 我相信错误在我的模型中,我不完全理解雄辩的语法,但我一直在尝试其他几种方法。我想在clients jobs表中保留primary,以便更容易地对其进行索引 以下是我的模型: 客户 工作 ClientsJobs(也许我应该删除这个模型?我用对了吗?) 我用来尝试显示clients jobs表的所有记录的代码如下(感谢sebastien): 这段代码适用于前两条记录,但“未知”之后,我很确定这是因为应用程序认为这是1:1的关系(我只有2个用户和2个作业作为虚拟数据)Php Laravel模型透视表1-1关系应为1-M,php,html,mysql,laravel,laravel-4,Php,Html,Mysql,Laravel,Laravel 4,我的Laravel模型有一个问题,我试图使用我数据库中已有的透视表,这是我正在使用的表的布局 客户 工作 客户工作 我相信错误在我的模型中,我不完全理解雄辩的语法,但我一直在尝试其他几种方法。我想在clients jobs表中保留primary,以便更容易地对其进行索引 以下是我的模型: 客户 工作 ClientsJobs(也许我应该删除这个模型?我用对了吗?) 我用来尝试显示clients jobs表的所有记录的代码如下(感谢sebastien): 这段代码适用于前两条记录,但“未知”之
提前感谢您提出的任何建议,如果您看到我做了一些令人讨厌的事情,请告诉我您应该删除
客户端JOBS
模型,这是不必要的。当正确设置时,Laravel的belongTomany
关系将处理透视表本身。看看:
多对多关系是一种更复杂的关系类型。一
这种关系的示例是具有多个角色的用户,其中
角色也由其他用户共享。例如,许多用户可能有
“管理员”的角色。这需要三个数据库表
关系:用户、角色和角色\用户。角色_用户表为
根据相关模型名称的字母顺序派生,以及
应具有“用户id”和“角色id”列
您的数据透视表应该使用Laravel的约定命名,即使用每个数据透视表的模型名(单数)并使用下划线字符(client\u job
)将它们连接在一起,或者您可以在关系中指定数据透视表的名称等。Laravel的文档给出了以下示例,允许您覆盖默认的透视表名称和相应的键:
return $this->belongsToMany('Role', 'user_roles', 'user_id', 'foo_id');
在您的情况下,如果您追求的是一对一的关系,那么实际上并不需要数据透视表。您可以只实现
有许多
和属于
关系。也就是说,一个客户属于一个工作,但一个工作可以有许多客户。嘿!我认识一个问题…:-)是的,我有点不耐烦,我需要离开stackoverflow
protected $table = 'jobs';
protected $fillable = array('first_name', 'last_name', 'email');
protected $primaryKey = "id";
public function clientsjobs() {
return $this->belongsToMany('ClientsJobs');
}
protected $table = 'clients-jobs';
protected $primaryKey = "id";
public function clients() {
return $this->hasOne('Client', 'id');
}
public function jobs() {
return $this->hasOne('Job', 'id');
}
$masterArray = array();
ClientsJobs::with('clients', 'jobs')->chunk(200, function($records) use (&$masterArray) { //Chunk Retrieves 200 Records at a time
foreach ($records as $record) {
$masterArray[] = array(
'id' => $record->id, // id
'client_name' => !empty($record->clients) ? $record->clients->fname : "Unknown",
'job_name' => !empty($record->jobs) ? $record->jobs->name : "Unknown",
'wage' => $record->wage,
'productivity'=> $record->productivity,
);
}
});
return $masterArray;
return $this->belongsToMany('Role', 'user_roles', 'user_id', 'foo_id');