簡體   English   中英

嘗試讀取 null 上的屬性“產品”

[英]Attempt to read property "produits" on null

我想添加到願望清單; 單擊添加后,出現錯誤。 我相信我想要訪問產品的方式是錯誤的。

public function addToFavorie($id)
{
    $user = Auth::user();
    $product = produit::find($id);

    if (!$product || !$user) {
        abort(404);
    }

    // I believe this is the part responsible for the error
    $favorie = $user->favorie;
    $favprds = $favorie->produits;
    //

    for ($i = 0; $i < count($favprds); $i++) {
        if ($favprds[$i]->id == $id)
            return redirect()->back()
                ->with('error', 'produit deja dans votre favorie');
    }
    $favorie->produits()->attach($product->id);

    return redirect()->back()->with('info', 'produit ajoute a votre favorie');
}

Model

public function user()
{
    return $this->belongsTo("App\Models\User");
}

public function produits()
{
    return $this->belongsToMany('App\Models\Produit', 'produits_favories');
}

我在 controller 中試過這個,它返回 404。

$user = Auth::user()->favorie;
$product = produit::find($id);

if (!$product || !$user) {
    abort(404);
}

$favprds = $favorie->produits;

而不是在public function produits() { return $this->belongsToMany('App\Models\Produit', 'produits_favories'); }中使用“belongsToMany” public function produits() { return $this->belongsToMany('App\Models\Produit', 'produits_favories'); }像這樣使用“hasMany” public function produits() { return $this->hasMany('App\Models\Produit', 'produits_favories'); } public function produits() { return $this->hasMany('App\Models\Produit', 'produits_favories'); }應該工作

public function addToFavorie($id)
{
    $product = produit::findOrFail($id);

    $favorie = Favorie::firstOrCreate([
        'user_id' => auth()->id()
    ], [
        /* attributes for a `Favorie` instance */
    ]);
    $favorie->produits()->syncWithoutDetaching($product->id);

    return redirect()->back()->with('info', 'produit ajoute a votre favorie');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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