如何在laravel雄辩中选择具体的栏目

假设我在表中有7列,我想只选择其中的两列,就像这样

SELECT `name`,`surname` FROM `table` WHERE `id` = '1';

在laravel雄辩模型中,它看起来是这样的

Table::where('id', 1)->get();

但我猜这个表达式将选择id = 1的所有列,我只需要两列(姓名,姓氏)。如何只选择两列?

630364 次浏览

你可以这样做:

Table::select('name','surname')->where('id', 1)->get();

你可以使用Table::select ('name', 'surname')->where ('id', 1)->get ()

请记住,当只选择某些字段时,如果您最终在请求中访问那些其他字段,则必须进行另一个查询(这可能是显而易见的,只是想包括这个警告)。包含id字段通常是一个好主意,这样laravel就知道如何回写您对模型实例所做的任何更新。

Table::where('id', 1)->get(['name','surname']);

还有Model::all(['id'])->toArray(),它将只获取id作为数组。

首先需要创建一个Model,表示该表,然后使用下面的Eloquent方法仅获取2个字段的数据。

Model::where('id', 1)
->pluck('name', 'surname')
->all();

通过使用all()方法,我们可以从表中选择特定的列,如下所示。

ModelName::all('column1', 'column2', 'column3');

请注意: Laravel 5.4

你可以使用下面的查询:

Table('table')->select('name','surname')->where('id',1)->get();

你也可以用勇气。

Model::where('id',1)->pluck('column1', 'column2');

你可以使用get()和all()

ModelName::where('a', 1)->get(['column1','column2']);

为了从表中获得特定列的结果,我们必须指定列名。

使用以下代码:-

   $result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();

例如:

$result = DB::Table('Student')->select('subject','class')->where('id',1)->get();

->get()很像->all()(和->first()等),可以接受你想要返回的字段作为参数;

->get/all(['column1','column2'])

会带回集合,但只与column1column2

你也可以像这样使用find():

ModelName::find($id, ['name', 'surname']);

$id变量可以是一个数组,以防你需要检索模型的多个实例。

你也可以在这里使用findOrFail()方法它很好用

如果没有捕获异常,则自动向用户发送404 HTTP响应。当使用这些方法不给出500错误时,没有必要编写显式检查来返回404响应。

ModelName::findOrFail($id, ['firstName', 'lastName']);
虽然最常见的方法是使用Model::select, 它可能导致在模型类中呈现用访问器方法定义的所有属性。如果你在模型中定义attribute:

<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class User extends Model
{
/**
* Get the user's first name.
*
* @param  string  $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}

TableName::select('username')->where('id', 1)->get(); < / p >

它将输出包含first_nameusername的集合,而不仅仅是用户名。

最好使用pluck(),单独使用或可选地与select组合使用——如果你想要特定的列。

TableName::select('username')->where('id', 1)->pluck('username');

TableName::where('id', 1)->pluck('username'); //返回只包含username值的集合

另外,可以选择使用->toArray()将集合对象转换为数组。

如果你想获取单行,并从该行单列,一行代码来获取特定列的值是使用find()方法,并指定你想检索它的列。

下面是示例代码:

ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];

在laravel 5.3中,只有使用get()方法才能获得表的特定列:

YouModelName::get(['id', 'name']);

或者在laravel 5.4中,你也可以使用all()方法来获取你选择的字段:

YourModelName::all('id', 'name');

使用上述方法get()all(),你也可以使用where(),但两者的语法不同:

模型::所有()

YourModelName::all('id', 'name')->where('id',1);

模型:get ()

YourModelName::where('id',1)->get(['id', 'name']);

获取一列的值:

Table_Name::find($id)->column_name;

你可以用where子句来使用这个方法:

Table_Name::where('id',$id)->first()->column_name;

或者使用此方法绕过PhpStorm "方法,在App\ model "中没有找到:

Table_Name::query()->where('id','=',$id)->first()->column_name;

在查询生成器中:

DB::table('table_names')->find($id)->column_name;

带where从句:

DB::table('table_names')->where('id',$id)->first()->column_name;

DB::table('table_names')->where('id',$id)->first('column_name');

最后一个方法的结果是数组

use App\Table;
// ...
Table::where('id',1)->get('name','surname');

如果没有哪里

Table::all('name','surname');

如果您想从数据库中获取单个值

    Model::where('id', 1)->value('name');

你可以得到它

`PostModel::where('post_status', 'publish')->get(['title', 'content', 'slug', 'image_url']`)

链接< a href = " https://stackoverflow.com/a/69580197/11543679 " > < / >

如果您需要获取一个列,直接调用模型上的pluck是在Laravel中从所有模型中检索单个列的最有效的方法。

在提取之前调用getall将在提取值之前将所有模型读入内存。

Users::pluck('email');

如果你想获取单列的值,比如'name',你也可以使用下面的方法:

Table::where('id', 1)->first(['name'])->name;

获取多列(返回集合):

Model::select('name','surname')->where('id', 1)->get();

如果你想把列作为数组使用下面的代码:

Model::select('name','surname')->where('id', 1)->get()->toArray();

如果你想获得一个单列,试试这个:

Model::where('id', 1)->first(['column_name'])->column_name;