2014-02-13 3 views
0

я следующий код в моем DesignsController:Eloquent строительства возвращения слишком много результатов

public function show($id) 
{ 
    return Design::find($id)->with('variables')->get(); 
} 

Когда я GET/дизайн/1 я должен получить обратно JSON из всего дизайна с идентификатором = 1, но я вернусь все текущие проекты.

В модели проекта:

/* Define relationship between designs and variables */ 
public function variables() 
{ 
    return $this->hasMany('Variable'); 
} 

routes.php:

Route::resource('designs', 'DesignsController'); 

Что я здесь делаю неправильно?

Редактировать: немного больше информации. Я получаю все результаты до тех пор, пока я ударил идентификатор фактического дизайна, поэтому, похоже, он находит результат в соответствии с идентификатором, но затем возвращает все результаты.

Если я удалю ->with('variables')->get();, тогда это сработает, но мне тоже нужны переменные. Вот модель для дизайна:

class Design extends Eloquent { 

    /* Define relationship between designs and variables */ 
    public function variables() 
    { 
     return $this->hasMany('Variable'); 
    } 

     /* Define relationship between designs and variables */ 
    public function user() 
    { 
     return $this->belongsTo('User'); 
    } 
} 

Variable модель:

class Variable extends Eloquent { 
public $timestamps = false; 
} 
+0

Включите переменную модель, если вы можете. Проблема может быть там. – TonyArra

+0

Там не так много, но я редактировал сообщение, чтобы включить его. – babbaggeii

ответ

1

Вы делаете свой "с" заявление некорректно:

Нетерпеливый нагрузка:

public function show($id) 
{ 
    return Design::with('variables')->find($id); 
} 

На самом деле я думаю, что вы проблема, это вызов get() после find(), поскольку find уже возвращает модель. Найти следует вызывать в конце создаваемого запроса, поскольку он по существу вызывает get() внутри него.

Ленивый-Нетерпеливый альтернатива:

public function show($id) 
{ 
    return Design::find($id)->load('variables'); 
} 
+0

Ах, фантастика. Благодарю. – babbaggeii

+0

@babbaggeii oh сделал исправление для ответа, проблема действительно вызвала find(). – TonyArra

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