簡體   English   中英

Laravel 屬於

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM