2013-05-23 2 views
0

Я хочу получить все детали задач (task_title и т. Д.), Принадлежащие одному author_id (в этом случае author2).Laravel 4: Как удалить ограничение limit 1 из Find() в Красноречиво?

тесты стол

author_id task_id 
author2 task_1 
author2 task_2 

Задачи стол

task_id task_title 
task_1 task_title_1 
task_2 task_title_2 

Автор таблицы

author_id author_name 
author_2 authorTwo 

Модель test.php

public function tasks() 
{ 
return $this->belongsTo('Task','task_id'); 
} 

TestsController.php

public function index() 
{ 
    $test=Test::find('author2')->tasks()->get(); 
    return View::make('tests.index', compact('tests')); 
} 

и SQL-запрос:

select * from `tests` where `author_id` = 'author2' limit 1 
select * from `tasks` where `tasks`.`task_id` = 'task1' 

Но на самом деле в таблице задач, есть более чем одно значение относится к автору 2 (в данном случае задачи 1 и TASK2), но поскольку sql только иллюстрирует задачу1.

Как я могу удалить ограничение 1 ограничение для получения всех задач, принадлежащих автору 2?

ответ

1

Test::where("author_id","=","author2")->get()

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

+0

Спасибо! Теперь я могу получить всю связанную задачу путем кодирования 'Test :: with ('tasks') -> где (" author_id "," = "," author2 ") -> get()' – JackpotK

+0

@JackpotK: Да; Однако, возможно, вы захотите изучить отношения. Определите функцию 'author()' со многими отношениями. –

+0

хорошо, вы можете показать мне, как определить функцию author()? Еще одна проблема, которую я только что нашел, хотя sql изменяет 'select * from' tests', где 'author_id' = 'tester2'' select * from 'tasks' где' tasks'.'task_id' в (' task1 ',' task2 ') ', когда я попытался показать детали задачи с помощью $ tests-> task_id $ tests-> task_task_title, отображается только task_id, но task_title пуст. – JackpotK

3

Существует несколько проблем с этим. Основными из них являются:

  • Вы используете неправильное отношение к много-много, смотреть в belongsToMany()
  • Похоже, что вы пытаетесь посмотреть на составного ключа, который не поддерживается
  • Поиск предназначен для извлечения только одной записи и не ограничивает результирующий набор отношений. Как показал ваш SQL, вы не ограничиваете свои задачи одним, вы ограничиваете тесты. Используйте get() в сочетании с where(), когда вам нужно извлечь несколько записей.

Вот ссылка на документацию, чтобы вы начали - http://four.laravel.com/docs/eloquent

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

  • Нет связанных вопросов^_^