我有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
。
我还认为我可以基于关系来执行if语句,但是没有运气:
public function index()
{
return view('home');
}
-------------
@if (Auth::user()->id == (Auth::user()->transactions->user_id))
更新:如果与user_id
和'auth id'不匹配,则使用以下代码错误。在视图中不返回不匹配。如果id
和user_id
匹配,则返回Match。
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
答案 0 :(得分:-1)
在您的控制器中,$transactions
变量接收给定表的查询构建器实例,而不仅仅是集合。您还忘记了将此变量发送到视图。如果要获取集合,则应使用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()
来检查事务是否属于用户,因为我们已经在控制器中做到了。