Laravel, MySQL запрос с объединением в классе модели

0

laravel создает свою собственную модель для каждой таблицы. Поскольку это одна из самых популярных рамочных работ, мы пошли на это. Большинство наших запросов mysql основаны на нескольких таблицах, мы используем join, и мы пишем эти запросы в самом контроллере. Может ли кто-то сказать нам, как обрабатывать запросы с несколькими таблицами в классе модели.

Заранее спасибо.

Теги:
laravel-4

1 ответ

0
Лучший ответ

Вы должны определить отношение в своем классе модели. Информацию о соотношении см. Здесь.

Например, если я хочу получить доступ к имени штата, на моей странице города:

контроллер:

$city = App::make('Platform\Storage\City\CityRepository')->view($city_id, false, [], ['state'=>array('id', 'name')])

Repository:

public function view($id, $active=true, $fields=array(), $with=array()) {
        $query = $this->model->newQuery();
        $tableName = $this->model->getTable();

        if ($active) {
            $query->where($tableName . '.is_active', '=', 1);
        }
        if (!$fields) {
            $fields = array($tableName . '.*');
        }
        if ($with) {
            $with = $this->model->processWithSelects($with);
            $query->with($with);
        }

        try {
            return $query->with($with)->where($tableName . '.id', '=', $id)->first($fields);
        }
        catch (Exception $e) {
            throw new DBException($e->getMessage(), $e->getCode(), $e->getPrevious());
        }
    }

Городская модель:

public function state() {
    return $this->belongsTo('State');
}

Для получения дополнительной информации посетите следующие разделы: Учебник по репозиторию, запрос Laravel, Simple CRUD

В своем контроллере создайте конструктор:

public function __construct(Model $model) {
    parent::__construct();

    $this->model = $model; // Model $model, means IOC or Dependancy Injection
    }

Затем выполните: $this->model->function_in_your_model(), чтобы выполнить ваши функции модели.

Смотрите, если это помогает.

  • 0
    Привет Gaurav, спасибо за ваш ответ ... Будет очень благодарно, если вы сможете объяснить, как получить результат запроса в контроллере, где функция объявлена в классе модели и использует отношения ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню