如何在刀片文件中连接表

时间:2017-11-04 18:48:36

标签: php mysql laravel-5.4

我对laravel不熟悉并正在构建一个简单的应用程序。我在我的控制器中使用此功能:

  public function __construct()
  {
      $this->middleware('auth');
  }


public function index()
{

    //
    //return view('adminlte::home');
  //  $user= Auth::user()->id;
    $csafe = csafe::where('id','=', $user->id)->get()->first();
    return view('csaves.show', array('csafe' => $csafe));
}

但是当我在网络浏览器中显示视图时,我收到以下错误:

  

未定义的变量:user   并且只显示用户的查询。   "从users中选择*,其中id =' 1'限制1"   我也试过用    $ csafe = csafe :: where(' id',' =',' {{$ user-> id}}') - > get () - >首先();   这次它再次失败错误:   试图获得非对象的属性

在我的查询中显示: "从users中选择*,其中id =' 1'限制1" 和 "从csaves中选择* id =' {{$ user-> id}}'"

限制我的csaves表以显示特定用户ID的值的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以这样使用它:

use App\User;
use App\Csafe;

public function index()
{

    $user = Auth::user();

    $csafe = Csafe::where('userid','=', $user->id)->first();
    return view('csaves.show', array('csafe' => $csafe));
}

正如我可以看到您的代码,您使用的错误如下:

  1. 您没有声明$ user变量
  2. 未调用和使用Csafe控制器
  3. 同时使用get()方法和first()方法。一次只能使用其中任何一个。

答案 1 :(得分:1)

这是因为用户变量$ user被注释:

改变这个:

//  $user= Auth::user()->id;

成:     $ user = Auth :: user() - > id;