Laravel,mysql查询加入模型类

时间:2015-01-28 04:47:48

标签: php laravel-4

laravel为每个表创建自己的模型。由于它是最流行的框架之一,我们为此而努力。我们的大多数mysql查询都基于多个表,我们使用join,我们在控制器本身编写这些查询。有人可以告诉我们,如何处理模型类中多个表的查询。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您必须在模型类中定义关系,有关关系的信息,请参阅here

E.g。如果我想访问州名,请在我的城市页面中:

  

控制器:

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

存储库:

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');
}

有关详情,请访问以下网址:Tutorial on RepositoryLaravel QuerySimple CRUD

  

在Controller中,创建一个构造函数:

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

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

然后执行:$this->model->function_in_your_model(),执行模型函数。

看,如果有帮助。