【发布时间】:2014-11-15 22:07:02
【问题描述】:
我在 Laravel 上的 belongsToMany 关系有问题。首先,我想描述我的表结构。我的数据库上有 3 个不同的表。项目、技能和项目技能是我的表。我的模型有一个结构。当我尝试使用技能插入项目时,它运行良好。但是,当我尝试获取单个项目时,它没有列出技能。
项目控制器:
$Project = Projects::with('skills')->where('Projects.SefTitle','=',$ProjectSef)->first();
return View::make('Projects.view',array('Project'=>$Project));
项目(模型)
...
public function skills(){
return $this->belongsToMany('Skills','ProjectSkills','ProjectID','SkillID');
}
...
查看:
@foreach($Project->Skills as $Skill)
{{$Skill->Title}} <br />
@endforeach
数据库和数据集:
【问题讨论】:
-
Projects::with('skills')->where('Projects.SefTitle','=',$ProjectSef)->take(1)->toSql();的返回值是多少?如果你在 phpMyAdmin 中运行它是否按预期工作? -
toSql()的输出是
select * from Projects where Projects.SefTitle = ? limit 1。其实只是在mysql上得到一个项目而已。我的问题是关于Skills的。 -
Puh 现在我的想法不多了...我想您已经在模型上设置了所有主键?喜欢
protected $primaryKey = 'ProjectID' -
是的,我再次检查了一遍,其中许多都有一个 primaryKey 变量。在模型上。但是,我的 ProjectSkills 表上没有任何主键列。
-
数据透视表上的主键不应该有所作为。其实我相信你连一个都不需要……你说你可以插入包括技能在内的数据?你使用了这种关系吗?
标签: php mysql laravel laravel-4 eloquent