3 回答
TA贡献1796条经验 获得超10个赞
请试试这个
$data['user_test'] = DB::table('language_skills_selected') ->select("language_skills.language_skill") ->join("language_skills","language_skills_selected.language_skills","=","language_skills.id") ->where('language_skills_selected.user_id', $id)->get();
TA贡献1835条经验 获得超7个赞
你可以使用这个代码
1 -> query for Get All skills
$data['user_test'] = DB::table('language_skills_selected')->where('user_id', $id)->get();
2 -> Query For language_skills Name
$data['language_skills'] = \App\LanguageSkill::where('id',$data['user_test']['language_skills])->get('language_skills');
3 -> Set Name instead of ID
$data['user_test']['language_skills'] = $data['language_skills'];
您可以使用 foreach 循环;我建议更改变量的名称
TA贡献1942条经验 获得超3个赞
命名约定
首先,我会改变结构以使用传统的 Laravel 命名。它还可以帮助其他人更好地理解表中的关系。
您已经将id
其用作自动增量主键,这很好。如果您随后通过外键引用另一个表,请使用单数表名,后跟_id
. 所以你的language_skills_selected
表结构变成
language_skills_selectedid
int primaryuser_id
int 外键(用户表)language_skill_id
int 外键(language_skills 表)
language_skillsid
int 主要name
字符串(名称,单数,因为其中只有一个名称)
我会将列重命名language_skills
为name
,因为表名已经表明表中的每个条目都是语言技能。列名应该更能描述它实际包含的内容,在您的情况下,language_skills
列包含名称。因此,您不妨以这种方式命名该列。
连接表
在 Laravel 中,您可以使用查询构建器 (参见此处)来构建查询,或者您可以使用Eloquent 模型(参见此处)。我强烈建议您仔细阅读文档的两个部分。它是框架的重要组成部分,选择何时使用取决于您的用例。
现在终于到了你的解决方案。如果您更改了列名,则可以在两个表之间编写连接语句,如下所示:
$data['user_test'] = DB::table('language_skills_selected') ->join('language_skills', 'language_skills_selected.language_skill_id', '=', 'language_skills.id') ->where('user_id', $id) ->get();
然后,您将获得一个连接结果,您也可以在其中访问 language_skill 的名称。
我还建议您总体上阅读更多有关 MySQL 的信息,因为在深入了解该框架之前,这是一个很好的基础知识。查找 MySQL 连接,并阅读这样的材料。
- 3 回答
- 0 关注
- 132 浏览
添加回答
举报