我有三个数据库表。
CREATE TABLE `tblproject` (
`ProjectID` int(11) NOT NULL,
`ProjectStatusID` varchar(30) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `tblSkills` (
`SkillID` int(11) NOT NULL,
`Skill` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `tblprojectSkills` (
`ProjectSkillID` int(11) NOT NULL,
`ProjectID` int NOT NULL,
`SkillID` int NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
在上述表格中,
SkillID
与tblSkills
和tblprojectSkills
相关联。
ProjectID
与Project
和projectSkills
表相关联。
我的项目模型如下。
class Project_Model extends Model
{
protected $table = "tblproject";
protected $primaryKey = "ProjectID";
public $timestamps = false;
public function ProjectSkills() {
return $this->hasMany('\App\Models\ProjectSkill_Model', 'ProjectID');
}
}
在 Laravel 5.1 中进行数据库查询的方法如下。
\App\Models\Project\Project_Model
::with('ProjectSkills')
->where('ProjectID', '=', $ProjectID)->first();
问题
我可以获取技能ID,但是如何从技能表中获取技能名称?
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'skill' in 'field list' (SQL: select
SkillID,
skillfrom
tblprojectskillswhere
tblprojectskills.
ProjectIDin (10))
。 - user5694966return $this->belongsToMany('\App\Models\ProjectSkill_Model', 'tblprojectSkills', 'ProjectID', 'SkillID');
在这里查看 http://laravel.com/docs/5.1/eloquent-relationships#many-to-many。 - Moppotblproject
中的ProjectID
与tblprojectSkills
中的ProjectID
相关联,而tblSkill
中的SkillID
与tblprojectSkills
中的SkillID
相关联。 - user5694966tblprojectSkills
被称为“枢轴表”,因为它就像两个其他表之间的“枢轴”。它们用于多对多关系。请查看上面的链接,了解它们在 Laravel 中的工作原理。 - MoppobelongsToMany
后,我收到了以下错误。SQLSTATE [42000]:语法错误或访问冲突:1066不唯一的表/别名:'tblprojectskill'(SQL:select
SkillID,
tblskill,
tblprojectskill。
ProjectID作为
pivot_ProjectID,
tblprojectskill。
SkillID作为
pivot_SkillID从
tblprojectskill内部联接
tblprojectskill,其中
tblprojectskill。
ProjectSkillID=
tblprojectskill。
SkillID在(10)中
tblprojectskill.
ProjectID`。 - user5694966tblSkills
表的模型类中,你是否设置了$table = 'tblSkills'
? - Moppo