从控制器功能获取特定值

时间:2019-03-20 12:39:29

标签: laravel

我开始学习Laravel,并试图达到以下目标:

从数据库获取数据并显示特定字段。

这是我在控制器中的代码:

public function show()
{
    $students = DB::select('select * from students', [1]);
    return $students;
}

这是我的路线代码:

Route::get('', "StudentController@show");

这一切对我都有效,并且显示以下内容:

[{"id":1,"firstname":"StudentFirstName","lastname":"StudentLastName"}]

如何仅显示“姓氏”字段?

谢谢!

4 个答案:

答案 0 :(得分:1)

$students[0]['lastname']将返回姓氏字段,[0]将获得数组中的第一个学生。

我建议为学生创建一个模型,这会使您的控制器变成这样:

$student = Students::first(); // to get first student
$student->lastname; // get last names

答案 1 :(得分:1)

DB::select('select * from students')

是一个原始查询,它返回一个stdClass对象数组,这意味着您必须遍历该数组并访问属性:

$students[0]->lastname

您还可以使用查询生成器返回对象的集合:

$collection = DB::table('students')->get();
$student = $collection->first();
$student->lastname;

最后,使用查询构建器,您可以使用pluck或value来获取姓氏。如果只有一个用户,则可以使用value来获取字段的第一个值:

DB::table('students')->where('id', 1)->value('lastname');

我强烈建议您阅读Laravel文档的“数据库”部分。

答案 2 :(得分:0)

如果只希望返回一列,则可以使用pluck()

public function show()
{
    $last_names= DB::table('students')->pluck('lastname');
    return $last_names;
}

这将返回所有学生的姓氏值的数组。 如果只需要一个,可以使用$last_names[0]

进行访问

请注意,您的show()方法通常使用一个参数来标识您要显示的学生。这很可能是学生的身份证。

答案 3 :(得分:0)

有几种方法可以完成此任务。首先,我建议您使用表的模型(在您的情况下,可能是Students)。

因此,例如,要在控制器本身中查看此内容,可以使用dd helper做类似的事情:

$student = Students::find(1);
dd($student->lastname);

或使用pluck method

$students = Students::all()->pluck('lastname');
foreach($students as $lastName) {
  echo $lastName;
}

或使用selects

$students = DB::table('students')->select('lastname');
dd($students);

无论如何,我想说的是,有几种方法可以做到这一点,您只需要弄清是否要调试控制器,并在刀片上显示...

希望这对您有所帮助!

相关问题