Пример #1
0
 /**
  * @param Builder $queryBuilder
  * @param $key
  * @param $conditions
  * @throws \Exception
  */
 private function whereConditions($queryBuilder, $key, $conditions)
 {
     $model = $queryBuilder->getModel();
     $modelColumns = ParseHelper::getModelColumns($model);
     $modelRelations = ParseHelper::getModelRelations($model);
     if (in_array($key, $modelColumns)) {
         $this->whereConditionTypes($queryBuilder, $key, $conditions);
     } elseif (in_array($key, $modelRelations)) {
         // if the the key is a relation, use whereHas laravel syntax
         $queryBuilder->whereHas($key, function ($whereHasQuery) use($conditions) {
             $whereHasConditions = json_encode(array($whereHasQuery->getModel()->getKeyName() => $conditions));
             $this->where($whereHasQuery, $whereHasConditions);
         });
     } else {
         ParseHelper::throwException(102, $key);
     }
 }