如何通过在主视图laravel用户关系

问题描述 投票:-1回答:1

我有2个表:

用户表:

  • ID
  • 名字
  • 等等..

交易表:

  • ID
  • 用户身份
  • 等等..

我试图运行检查,看是否该用户ID在交易表中USER_ID匹配。

我需要从主视图做到这一点。

我有的:

用户模型:

public function transactions() {
    return $this->hasMany(Transaction::class);
}

交易模式:

use App\User; ...

public function user() {
    return $this->belongsTo(User::class);
}

家庭控制器:

public function index()
{
    $currentuserid = Auth::user()->id;
    $transactions = DB::table('transactions')->WHERE($currentuserid , '=','user_id' );

   return view('home');

}

景观:

@if ($transactions == true)
 //Do stuff
@else
 //Do other stuff
@endif

下面不断返回true即使Auth idTransaction user_id不匹配。

我也想过,如果基于关系的发言中,我可以简单地做到这一点,但没有运气:

public function index()
{
   return view('home');
}
-------------
@if (Auth::user()->id == (Auth::user()->transactions->user_id))

更新:使用下面的代码错误,如果有一个与user_id和“认证ID”不匹配。鉴于不返回不匹配。如果iduser_id匹配时返回匹配。

    public function index()
    {
        $currentUserId = Auth::user()->id;
        $transactions = Transaction::where('user_id','=',$currentUserId)->get();
        return view('home', compact('transactions'));

    }
@foreach ($transactions as $transaction)

  @if($transaction->user_id == Auth::user()->id)
  Match
  @elseif ($transaction->user_id != Auth::user()->id)
  Mismatch
  @endif

@endforeach  
php laravel
1个回答
-1
投票

在你的控制器$transactions变量收到查询构建器实例给定的表,不只是一个collection.You也忘了这个变量发送到您的视图。如果你想获得在收集你应该使用get()方法,然后将它们循环是这样的:

调节器

$transactions = Transaction::where('user_id','=',$currentUserId)->get();
return view('home', compact('transactions'));

视图

@foreach($transactions as $transaction)
{
  if($transaction->user_id == Auth::user()->id)
  // do something
  else
  // do something
}
@endforeach

在这种情况下,我们甚至不需要使用这个if()检查该交易是否属于用户,因为我们已经做了,在控制器。

© www.soinside.com 2019 - 2024. All rights reserved.