Php “在以下情况下召开会议”;“所有类别”;独立于会议类别单击

Php “在以下情况下召开会议”;“所有类别”;独立于会议类别单击,php,laravel,Php,Laravel,我有这个代码,所以当点击一个类别时,它只显示属于该点击类别的会议 它工作得很好 但我也有一个“所有类别”的链接,我希望当点击这个链接时,能够独立于类别获得最后8个会议 但我不明白如何才能恰当地实现这一目标。你知道怎么做吗?是否需要为“所有类别”创建另一条路线以及该链接的特定方法?或者,当用户在特定类别中单击时,是否可以重用已经在使用的route方法 HTML: 获取会议的方法: public function WhereHasCategory(Request $request) {

我有这个代码,所以当点击一个类别时,它只显示属于该点击类别的会议

它工作得很好

但我也有一个“所有类别”的链接,我希望当点击这个链接时,能够独立于类别获得最后8个会议

但我不明白如何才能恰当地实现这一目标。你知道怎么做吗?是否需要为“所有类别”创建另一条路线以及该链接的特定方法?或者,当用户在特定类别中单击时,是否可以重用已经在使用的route方法

HTML:

获取会议的方法:

 public function WhereHasCategory(Request $request)
    {
        $conferences = Category::find($request->id)->conferences;
        return response()->json($conferences);
    }
会议模式:

public function categories(){
        return $this->belongsToMany('App\Category');
    }
以及数据透视表结构:

Schema::create('category_conference', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('conference_id');
            $table->integer('category_id');
            $table->timestamps();
        });
而不是

$conferences = Category::find($request->id)->conferences;
return response()->json($conferences);
您可以进行以下查询:

$query = Conference::query();

if($request->id){
    $query->whereHas('categories', function($q) use($request){
        $q->where('categories.id', $request->id);
    };
}else{ 
    $query->orderBy('id','desc')->take(8); 
}

$conferences = $query->get();


return response()->json($conferences);
还有其他方法可以做到这一点,就像编程中经常出现的情况一样


另外,您可以简单地
返回$conferences
,如果我没有弄错的话,它将被转换为json:)

进行降序限制查询,但是创建另一个路由和方法是必需的吗?谢谢,但必须同时进行两个查询。因为如果用户单击某个特定类别,它将显示属于该类别的会议。但是如果用户点击“所有类别”而不是某个特定类别,它应该显示8个独立于该类别的会议。我刚刚编辑了我的答案,我希望它应该回答您的评论谢谢,但像这样显示“未找到列:1054未知列”在“where子句”中的“category_id”(SQL:从
会议
中选择*其中
类别id
=1)单击某个特定类别时。它显然是一个占位符,但我假设如果每个会议都属于某个类别,并且某个类别有多个会议,那么您应该有一个列将会议链接到该类别否?您应该使用此列的名称而不是类别id。如果您有任何疑问,请使用conf编辑您的问题erence模型可以吗?谢谢,我更新了这个问题。有一个pivot table category_会议。
Schema::create('category_conference', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('conference_id');
            $table->integer('category_id');
            $table->timestamps();
        });
$conferences = Category::find($request->id)->conferences;
return response()->json($conferences);
$query = Conference::query();

if($request->id){
    $query->whereHas('categories', function($q) use($request){
        $q->where('categories.id', $request->id);
    };
}else{ 
    $query->orderBy('id','desc')->take(8); 
}

$conferences = $query->get();


return response()->json($conferences);