2016-09-21 2 views
1

У меня есть это на моей модели ScholarКак начать модель без ГЭТ() на Laravel

<?php namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Scholar extends Model { 

    protected $primaryKey = 'scholar_id'; 
    protected $fillable = ['ngo_id','scholar_lname','scholar_fname','scholar_image','scholar_nickname','scholar_cityAddress','scholar_permaAddress','scholar_birthday','scholar_placebirth','scholar_age','scholar_gender','scholar_email','scholar_contact']; 

} 

то это на мой контроллер

$scholars = new Scholar; <------ 

if(Input::get('age_from')) 
    $scholars->where('age', '=', Input::get('age_from')); 

$scholars->get(); 

return $scholars; 

Я хочу, чтобы начать это, но когда я пытаюсь $scholars = Scholar::all(); Я не могу использовать ->get();

В любом случае, как это сделать дополнительно where?

ответ

3

Вы можете использовать newQuery;

$scholars = (new Scholar)->newQuery(); 

if(Input::get('age_from')) { 
    $scholars->where('age', '=', Input::get('age_from')); 
} 

return $scholars->get(); 
+0

он возвращает мне этот «Нестатический метод Illuminate \ Database \ Eloquent \ Model :: newQuery() не следует называть статическим, предполагая $ this из несовместимого контекста» –

+0

А, извинения, обновленные –

0

Возможно, это не самый лучший способ сделать это, но это работает

Попробуйте что-то вроде:

$scholars = Scholar::where('id','>',0); //Assuming you have an autoincrement id in your table 

if(Input::get('age_from')) 
    $scholars->where('age', '=', Input::get('age_from')); 

$scholars->get(); 

return $scholars; 
1

Если вам нужно, чтобы все ученые в любом случае вы можете получить все строки в коллекции только с один запрос:

$allScholars = Scholar::all(); 

И тогда вы можете получить любые данные из коллекции:

$scholars = $allScholars->where('age', '=', Input::get('age_from')); 

Теперь вы все ученые в $allScholars коллекциях и ученых указанного возраста в $scholars.

+0

Я хочу использовать для измельчения по запросу chop ... потому что у меня все еще есть другой запрос –

+0

Не могли бы вы объяснить, что именно вы имеете в виду? –

+1

Использование 'all()' выбирает все данные, тогда 'where()' фильтрует коллекцию, которая неэффективна. Вы загружаете все данные в таблицу в память, а затем фильтруете результаты. –

Смежные вопросы