Laravel如何select除id之外的其他字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel如何select除id之外的其他字段相关的知识,希望对你有一定的参考价值。

$data2 = DB::table('fam_searches') //将两张表拼接起来
->join('fam_msgs', function($join)

$join->on('fam_searches.fam_id', '=', 'fam_msgs.fam_id');
)->select('fam_searches.id', 'fam_searches.fam_id','fam_searches.username','fam_searches.fam_name')
->skip($pageSize*($pageIndex-1))
->limit($pageSize)
->orderBy('fam_searches.id', 'desc')
->get();

如我想select的东西太多了 可以select除什么之外的东西吗

参考技术A select from yourtables where and name not in('')
括号你不要的列

为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者

【中文标题】为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者【英文标题】:Specify other guard/provider than default one for JWTAuth authentication Laravel 5.5 【发布时间】:2018-07-25 06:06:03 【问题描述】:

https://github.com/tymondesigns/jwt-auth 非常适合为默认保护验证用户,但我想从另一个表登录用户 (auth:guard)

这里是 config/auth.php:

'defaults' => [
        'guard' => 'user',
        'passwords' => 'users',
    ],

 'guards' => [
        'user' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
        'student' => [
            'driver' => 'jwt',
            'provider' => 'students',
        ],
        'father' => [
            'driver' => 'jwt',
            'provider' => 'fathers',
        ],
        'mother' => [
            'driver' => 'jwt',
            'provider' => 'mothers',
        ],
    ],

正如我所提到的,jwt 身份验证适用于 'guard' => 'user',因为它是默认身份验证,但我想使用 'guard' => 'student' 对学生进行身份验证而不更改默认保护。

这是我的登录功能:

public function login(Request $request)
        $credentials = $request->only('email', 'password');
        $jwt = '';
        try 
            if (!$jwt = JWTAuth::attempt($credentials)) 
                return response()->json([
                    'response' => 'error',
                    'message' => 'invalid_credentials',
                ], 401);
            
         catch (JWTAuthException $e) 
            return response()->json([
                'response' => 'error',
                'message' => 'failed_to_create_token',
            ], 500);
        
        return response()->json([
            'message' => 'success',
            'result' => ['token' => $jwt]
        ]);
    

为了更好地理解,我已按照文档中显示的所有步骤安装 tymon/jwt-auth 版本 dev-develop。 任何帮助都非常感谢

【问题讨论】:

你找到解决办法了吗? 是的。这个函数 auth()->shouldUse('father');但我找不到我想要的东西 【参考方案1】:

config/auth.php 中的提供者无需更改。

您可以在每个控制器中更改__construct 函数,如下所示。以便 jwt 知道要验证哪个模型。

父亲控制器

function __construct()

    Config::set('jwt.user', Father::class);
    Config::set('auth.providers', ['users' => [
            'driver' => 'eloquent',
            'model' => Father::class,
        ]]);

StudentController

function __construct()

    Config::set('jwt.user', Student::class);
    Config::set('auth.providers', ['users' => [
            'driver' => 'eloquent',
            'model' => Student::class,
        ]]);

【讨论】:

【参考方案2】:

试试这样的

 public function login(Request $request)


    //validate the user credentials 


$this->validate($request,[
      'email'=>'required | email',
      'password'=>'required',
]);

 //attempt to log in the admin

if(Auth::guard('student')->attempt(['email'=>$request->email,
'password'=>$request->password],$request->remember))

//if successful, then redirect to their intended location 

return redirect()->intended(route('dashboard'));



    

    // if unsuccessful, then redirect them back to the login form with form data

    return redirect()->back()->withInput($request->only('email','remember'));

【讨论】:

无论如何感谢您的回答。但这不是我想在我的项目中使用的。我需要使用 Api 身份验证,这不像守卫身份验证那么简单。在我的项目中,我使用了 JWTAuthentication 但找不到多用户的任何来源。

以上是关于Laravel如何select除id之外的其他字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用除 Id 之外的字段获取数据时实现二级缓存

如何在下拉列表中获取除隐藏和提交按钮之外的所有表单字段

如何在 Mongoose 中定义除 _id 之外的其他主键?

除了键入选择 *。在 Mysql [重复]

选择除基于 MySQL 中的两个字段之外的所有行

为 JWTAuth 身份验证 Laravel 5.5 指定除默认值之外的其他守卫/提供者