簡體   English   中英

Laravel:調用未定義的方法Illuminate \\ Database \\ Eloquent \\ Collection :: where()

[英]Laravel: Call to undefined method Illuminate\Database\Eloquent\Collection::where()

我在此控制器功能中遇到問題。 該函數采用可選的“搜索”參數,並使用它在整個雇主可用職位中搜索關鍵字。 當我調用此函數時,出現以下錯誤。

調用未定義的方法Illuminate \\ Database \\ Eloquent \\ Collection :: where()

在此處輸入圖片說明

這是我的相關代碼。 任何建議將不勝感激!

路由:(前綴:“ / api / v1 /”)

Route::get('employer/{employerId}/jobs', 'EmployersController@getJobs');

控制器:

public function getJobs ($employerId) {

    $search = Input::get('query');

    $jobs = Job::getAvailableByEmployer($employerId, $search);
    return $jobs;
}

模型:

public static function getAvailableByEmployer($employerId, $search=NULL)
{
    $jobs = Job::where('jobs.employer_id', '=', $employerId)
                ->where('jobs.status', '=', 'Available')
                ->orderBy('jobs.created_at', 'desc')
                ->get();

    if ($search)
    {
        $jobs->where('title', 'LIKE', '%'. $search .'%')
            ->orWhere('description', 'LIKE', '%'. $search .'%');
  }

        return $jobs;
}

使您的功能是這樣的:

public function scopeGetAvailableByEmployer($query, $employerId, $search=NULL)
{
    $query->where('employer_id', '=', $employerId)
            ->where('status', '=', 'Available')
            ->orderBy('created_at', 'desc');


    if ($search)
    {
        $jobs->where('title', 'LIKE', '%'. $search .'%')
             ->orWhere('description', 'LIKE', '%'. $search .'%');
    }

    return $query;
}

現在稱呼它( scope讓您可以靜態調用):

$jobs = Job::getAvailableByEmployer($employerId, $search)->get();

還要記住,一旦調用get() ,就無法進行任何查詢,因為它不再是Query Builder ,而是Collection對象。

暫無
暫無

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

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