@@ -20,15 +20,20 @@ class QueryRelationManager
20
20
protected $ query ;
21
21
22
22
/**
23
- * @var string псевдоним таблицы, данные из которой хотим получить
23
+ * @var string псевдоним основной таблицы запроса
24
24
*/
25
25
protected $ mainTableAlias ;
26
26
27
27
/**
28
- * @var string имя таблицы, данные из которой хотим получить
28
+ * @var string имя основной таблицы запроса
29
29
*/
30
30
protected $ mainTableName ;
31
31
32
+ /**
33
+ * @var string первичный ключ основной таблицы запроса
34
+ */
35
+ protected $ mainTablePkField ;
36
+
32
37
/**
33
38
* @var callable[] список анонимных функций, которые будут модифицировать запрос
34
39
*/
@@ -342,37 +347,11 @@ public function all(?Connection $db = null): array
342
347
return array_values ($ maps [$ this ->mainTableAlias ]);
343
348
}
344
349
345
- /**
346
- * Возвращает текст SQL-запроса
347
- * @return string текст SQL-запроса
348
- */
349
- public function getRawSql (): string
350
- {
351
- $ this ->prepare ();
352
-
353
- return $ this ->query ->createCommand ()->getRawSql ();
354
- }
355
-
356
- /**
357
- * QueryRelationManager constructor.
358
- * @param string $className имя класса сущности ActiveRecord
359
- * @param string $alias псевдоним таблицы сущности
360
- * @param string $fieldJoinTo имя поля, на которое будут ссылаться подключаемые сущности
361
- * @param string $primaryFieldName имя поля первичного ключа таблицы
362
- * @throws QueryRelationManagerException
363
- */
364
- protected function __construct (string $ className , string $ alias , string $ fieldJoinTo , string $ primaryFieldName = 'id ' )
365
- {
366
- $ this ->mainTableAlias = $ alias ;
367
- $ this ->mainTableName = $ this ->getTableName ($ className );
368
- $ this ->addAliases ($ className , $ alias , $ fieldJoinTo , $ primaryFieldName );
369
- }
370
-
371
350
/**
372
351
* Создает и выстраивает SQL-запрос
373
- * @return $this
352
+ * @return Query
374
353
*/
375
- protected function prepare (): self
354
+ public function prepare (): Query
376
355
{
377
356
$ this ->query = new Query ();
378
357
@@ -403,7 +382,43 @@ protected function prepare(): self
403
382
$ modifier ($ this ->query );
404
383
}
405
384
406
- return $ this ;
385
+ return $ this ->query ;
386
+ }
387
+
388
+ /**
389
+ * Возвращает текст SQL-запроса
390
+ * @return string текст SQL-запроса
391
+ */
392
+ public function getRawSql (): string
393
+ {
394
+ $ this ->prepare ();
395
+
396
+ return $ this ->query ->createCommand ()->getRawSql ();
397
+ }
398
+
399
+ /**
400
+ * Возвращает первичный ключ основной таблицы с префиксом в виде алиаса этой таблицы
401
+ * @return string
402
+ */
403
+ public function getMainTablePkField (): string
404
+ {
405
+ return "{$ this ->mainTableAlias }. {$ this ->mainTableField }" ;
406
+ }
407
+
408
+ /**
409
+ * QueryRelationManager constructor.
410
+ * @param string $className имя класса сущности ActiveRecord
411
+ * @param string $alias псевдоним таблицы сущности
412
+ * @param string $fieldJoinTo имя поля, на которое будут ссылаться подключаемые сущности
413
+ * @param string $primaryFieldName имя поля первичного ключа таблицы
414
+ * @throws QueryRelationManagerException
415
+ */
416
+ protected function __construct (string $ className , string $ alias , string $ fieldJoinTo , string $ primaryFieldName = 'id ' )
417
+ {
418
+ $ this ->mainTableAlias = $ alias ;
419
+ $ this ->mainTableName = $ this ->getTableName ($ className );
420
+ $ this ->mainTableField = $ fieldJoinTo ;
421
+ $ this ->addAliases ($ className , $ alias , $ fieldJoinTo , $ primaryFieldName );
407
422
}
408
423
409
424
/**
0 commit comments