Php 如何根据id获取国家名称?
我有一个表,用于保存所选语言技能的记录id。现在,我需要知道每件物品的名称。我用表格语言保存了名字 以下是我为大家准备的变量和dd: $data['user\u test']=DB::table'language\u skills\u selected'->其中'user\u id',$id->get; 这里有一个名为的变量: $data['language_skills']=\App\LanguageSkill::列出'language_skill','id'; 因此,我需要的不是这些id,而是语言的名称-ex:language:保加利亚语-级别:Expert请试试这个Php 如何根据id获取国家名称?,php,database,laravel,Php,Database,Laravel,我有一个表,用于保存所选语言技能的记录id。现在,我需要知道每件物品的名称。我用表格语言保存了名字 以下是我为大家准备的变量和dd: $data['user\u test']=DB::table'language\u skills\u selected'->其中'user\u id',$id->get; 这里有一个名为的变量: $data['language_skills']=\App\LanguageSkill::列出'language_skill','id'; 因此,我需要的不是这些id
$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();
请试试这个
$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();
命名约定
首先,我将改变结构,使用传统的Laravel命名。
这也有助于其他人更好地理解您表中的关系
您已经使用id作为自动递增主键,这很好。
如果然后通过外键引用另一个表,请使用单数表名,后跟_id。
因此,您的语言\u技能\u所选的表结构成为
语言技能选择
id int主
user_id int外键用户表
语言技能id int外键语言技能表
语言技能
id int主
名称字符串名称为单数,因为其中只有一个名称
我将把language_skills列重命名为name,因为表名已经表明表中的每个条目都是language_skill。列名应该更能描述它实际包含的内容,在您的例子中,language_skills列包含该名称。因此,您不妨这样命名该列
连接表
在Laravel中,可以使用查询生成器构建查询,也可以使用雄辩的模型。我强烈建议您全面阅读文档的两部分。
它是框架的重要组成部分,并根据您的用例选择何时使用
现在,最后是您的解决方案。如果更改了列名,可以在两个表之间编写join语句,如下所示:
$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();
然后,您将获得一个联接结果,在该结果中,您还可以访问语言技能的名称
我还建议您阅读更多关于MySQL的内容,因为在深入研究框架之前,它是一个很好的基础。查找MySQL连接,并阅读材料。命名约定
首先,我将改变结构,使用传统的Laravel命名。
这也有助于其他人更好地理解您表中的关系
您已经使用id作为自动递增主键,这很好。
如果然后通过外键引用另一个表,请使用单数表名,后跟_id。
因此,您的语言\u技能\u所选的表结构成为
语言技能选择
id int主
user_id int外键用户表
语言技能id int外键语言技能表
语言技能
id int主
名称字符串名称为单数,因为其中只有一个名称
我将把language_skills列重命名为name,因为表名已经表明表中的每个条目都是language_skill。列名应该更能描述它实际包含的内容,在您的例子中,language_skills列包含该名称。因此,您不妨这样命名该列
连接表
在Laravel中,可以使用查询生成器构建查询,也可以使用雄辩的模型。我强烈建议您全面阅读文档的两部分。
它是框架的重要组成部分,并根据您的用例选择何时使用
现在,最后是您的解决方案。如果更改了列名,可以在两个表之间编写join语句,如下所示:
$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();
然后,您将获得一个联接结果,在该结果中,您还可以访问语言技能的名称
我还建议您阅读更多关于MySQL的内容,因为在深入研究框架之前,它是一个很好的基础。查找MySQL连接,并阅读材料。您可以使用此代码
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循环;
我建议更改变量的名称您可以使用此代码
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循环;
我建议更改变量的名称请发布准确的表结构。您有两个表,语言技能选择表和语言技能表,对吗?每个列的名称是什么?您可以使用联接来获得结果。如果我知道这个列的结构,我可以帮你解决这个问题。对不起,在我选择的语言中,我有-id,user\u id和language\u skills这里是id。在语言技能方面,我有id和语言技能,以下是名字。谢谢。请张贴准确的表格结构。您有两个表,语言技能选择表和语言技能表,对吗?每个列的名称是什么?您可以使用联接来获得结果。如果我知道这个列的结构,我可以帮你解决这个问题。对不起,在我选择的语言中,我有-id,user\u id和language\u skills这里是id。在语言技能方面,我有id和语言技能
这是名字。谢谢。有了这段代码,我得到了这个错误:SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“语言技能。语言技能”SQL:选择语言技能。语言技能来自语言技能所选内部连接语言技能关于语言技能所选。语言技能=语言技能。id其中选择语言技能。用户id=548请提供语言技能表字段listupdated answer language_skills=>`选择函数中的language_skill`如果与language_skills_selected表中的名称相同,则还可以将language_skills_selected.language_skills更新为language_skills_selected/var/www/clients/client1/web2/web/resources/views/profile/language_skill.blade.php View:/var/www/clients/client1/web2/web/resources/views/profile/language_skill.blade.php使用此代码,我得到以下错误:SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“语言技能。语言技能”SQL:选择语言技能。语言技能来自语言技能所选内部连接语言技能关于语言技能所选。语言技能=语言技能。id其中选择语言技能。用户id=548请提供语言技能表字段listupdated answer language_skills=>`选择函数中的language_skill`如果与language_skills_selected表中的名称相同,则还可以将language_skills_selected.language_skills更新为language_skills_selected/var/www/clients/client1/web2/web/resources/views/profile/language_skill.blade.php视图:/var/www/clients/client1/web2/web/resources/views/profile/language_skill.blade.php