【问题标题】:How to set condition in Query Builder?如何在查询生成器中设置条件?
【发布时间】:2016-11-11 03:38:37
【问题描述】:

我正在尝试在我的函数中设置一个条件,我需要将我的列 role_id 设置为 1,如果它是真的,它将返回给我一个视图。首先我检索users$result = DB::table('users')->get(); 中的所有列,然后设置一个if 条件。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use App\Http\Requests;
use DB;

class DocumentController extends Controller
{
    public function getDocuments()
    {
        $result = DB::table('users')->get();


        if ('role_id' == 1)
        {
            return view ('document.create');
        }
    }
}

我试图设置我的role_id == 1,但它说。

使用未定义的常量 role_id - 假定为“role_id”

【问题讨论】:

    标签: php laravel laravel-5.2


    【解决方案1】:

    试试这个...

    // if you want to fetch only user with role_id = 1
        $users = DB::table('users')->where('role_id', '=', 1)->get();
    

    在你的情况下,你可以使用类似的条件

    if( $users->role_id == 1 )
    {
    
    }
    

    【讨论】:

    • 这向我展示了一个视图。但是当我使用不同的role_id 登录用户时,它仍然显示return view ('document.create'); 假设此视图仅适用于值为1 的role_id
    • 如果您只检查登录用户,那么您必须使用 if(\Auth::user()->role_id == 1) @anyber 建议。
    • 正是我要找的。感谢您的帮助。
    【解决方案2】:

    如果要查看当前用户,只需要利用Auth::user()

     if(\Auth::user()->role_id == 1)
    

    【讨论】:

    • role_id多于一个时如何设置条件?
    • 如果不止一个怎么定义? 1,2,31|2|3,还是其他方式?
    • 而不是写else if (Auth::user()-&gt;role_id == 3) 我怎么能在一种情况下做到这一点?
    • 您希望两者都显示该视图?` if(\Auth::user()->role_id == 1 || Auth::user()->role_id == 3)`。如果你想让它们转到不同的视图,那么你需要一个 if/else 或一个 switch 语句。
    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2017-03-31
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多