我开始学习Laravel,并试图达到以下目标:
从数据库获取数据并显示特定字段。
这是我在控制器中的代码:
public function show()
{
$students = DB::select('select * from students', [1]);
return $students;
}
这是我的路线代码:
Route::get('', "StudentController@show");
这一切对我都有效,并且显示以下内容:
[{"id":1,"firstname":"StudentFirstName","lastname":"StudentLastName"}]
如何仅显示“姓氏”字段?
谢谢!
答案 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);
无论如何,我想说的是,有几种方法可以做到这一点,您只需要弄清是否要调试控制器,并在刀片上显示...
希望这对您有所帮助!