我有2个表:
用户表:
交易表:
我试图运行检查,看是否该用户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 id
和Transaction user_id
不匹配。
我也想过,如果基于关系的发言中,我可以简单地做到这一点,但没有运气:
public function index()
{
return view('home');
}
-------------
@if (Auth::user()->id == (Auth::user()->transactions->user_id))
更新:使用下面的代码错误,如果有一个与user_id
和“认证ID”不匹配。鉴于不返回不匹配。如果id
&user_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
在你的控制器$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()
检查该交易是否属于用户,因为我们已经做了,在控制器。