Laravel where 子句中的未定义变量

Laravel Undefined variable in where clause

我正在尝试从 url 获取 id 查询参数。之后,我要比较url中的ID与数据库中的作品ID是否相同,然后进行其他操作。

但是,where 子句中的 $artworks()->id 算作未定义变量。问题是未定义的变量:艺术品。请问我哪里做错了?

public function show($id)
{
    if(filled($id)){
        $artworks   = Artwork::all()->where($id,'=',$artworks()->id);
        $categories = Category::all();
        $artist = User::all();
        return view('pages.artwork-detail', compact('categories', 'artworks','artist'));
    }else{
        echo("The id does not exist.");
    }

}

你可以这样做:

public function show($id)
{
    if(filled($id)){
        $artworks   = Artwork::find($id);
        $categories = Category::all();
        $artist = User::all();
        return view('pages.artwork-detail', compact('categories', 
               'artworks','artist'));
     }else{
       echo("The id does not exist.");
    }

}

我不知道我的回答是否有效,但我肯定可以解决您代码中的一些问题。

public function show($id)
{
    if(!filled($id)) return echo("The id does not exist.");
    
    // I don't know $id belongs to what. If it's artworks' id:
    $artworks   = Artwork::findOrFail($id);
    // Otherwise, let's say it's user_id on the artworks table:
    $artworks   = Artwork::where('user_id', $id)->get();
    // But if it's, use the following line instead of the other one.
    
    
    $categories = Category::all();
    
    $artist = User::all();
    
    return view(
        'pages.artwork-detail',
         compact('categories', 'artworks', 'artist')
    );
}

试试这些 where 条件

$artworks   = Artwork::where('id','=', $id)->get();

$artworks   = Artwork::where('id', $id)->get();

$artworks   = Artwork::find($id);

如果您只需要一条记录,请尝试这些 where 条件

$artworks   = Artwork::where('id','=', $id)->first();

$artworks   = Artwork::where('id', $id)->first();

$artworks   = Artwork::find($id);