Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据id获取国家名称?_Php_Database_Laravel - Fatal编程技术网

Php 如何根据id获取国家名称?

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

我有一个表,用于保存所选语言技能的记录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

请试试这个

$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