[英]Laravel belongsto
我想要做什么,檢查“advert_id - auht user id”是否在最喜歡的表中。
查詢應該如何?
廣告表:
| 編號 | 姓名 | | -------- | -------- | | 1 | lorem ipsun| | 2 | lorem ipsum dolor|
最喜歡的表:
| 編號 | 用戶 ID | 廣告ID| | -------- | -------- | -------- | | 1 | 1| 1 | | 2 | 1| 2 |
廣告型號:
class Advert extends Model
{
protected $fillable = [
"id",
"name",
];
}
最喜歡的型號:
class Favorite extends Model
{
protected $fillable = [
'user_id',
'advert_id'
];
}
控制器:
$adverts = Adverts::get();
return view("adverts", ["adverts" => $adverts]);
看法:
@foreach ($adverts as $advert)
@if ($advert->favorite == true)
checked
@else
unchecked
@endif
@endforeach
固定的 :
public function favorite(){
return $this->belongsTo(Favorite::class, 'id', 'advert_id');
}
$adverts->withCount(['favorite as favorite' => function($q){
$q->where("user_id", Auth::user()->id);
}]);
我相信您想知道廣告是否有相關的最喜歡的模型,對嗎? 在這種情況下,您應該在Advert
模型類中定義一個關系,以在Favorite
模型和Advert
模型之間創建鏈接:
// app/Models/Advert.php
public function favorites()
{
return $this->hasMany(Favorite::class);
}
然后在您的視圖文件中:
@foreach ($adverts as $advert)
@if (count($advert->favorites))
checked
@else
unchecked
@endif
@endforeach
但是,如果您根據當前用戶是否收藏廣告來檢查廣告,那么您還應該這樣做:
// app/Models/Advert.php
public function isFavoriteOfUser(User $user)
{
return !! $this->favorites->where('user_id', $user->id)->first();
}
然后在您的刀片文件中,您將執行以下操作:
@foreach ($adverts as $advert)
@if ($advert->isFavoriteOfUser(auth()->user()))
checked
@else
unchecked
@endif
@endforeach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.