villiwalla
@villiwalla
HTML-верстка

Почему выбирается не верные записи из БД, в связанных таблицах?

Вопрос я уже поднимал ( Как выбрать значение ИЗ промежуточной таблицы? ), но вроде как сам нашел на него ответ. Но вот, заметил то что цены на услуги специалиста выбираются не верно.

Model Services.php
public function getPrice() {
        return $this->hasOne(ServicesSpecialist::className(), ['service_id' => 'id']);
    }

    public function getSpecialists() {
        return $this->hasMany(Specialist::className(), ['id' => 'specialist_id'])
            ->viaTable('services_specialist', ['service_id' => 'id']);
    }


Model Specialist.php
public function getServices() {
        return $this->hasMany(Services::className(), ['id' => 'service_id'])
            ->viaTable('services_specialist', ['specialist_id' => 'id']);
    }


На странице специалиста вызываю:
<? foreach($model->services as $service): ?>
        <tr>
            <td style="vertical-align: middle;"><?= $service->title ?></td>
            <td><?= \yii\helpers\Html::textInput('ServicesSpecialist['.$service->id.']', $service->price->price, ['class' => 'form-control']) ?></td>
        </tr>
    <? endforeach; ?>


ID специалиста 38, вторая услуга всегда приходит для специалиста с ID 40:
var_dump()
object(app\models\Services)[187]
  private '_attributes' (yii\db\BaseActiveRecord) => 
    array (size=8)
      'id' => int 12
      'title' => string 'Цикл вебинаров «Отношения»' (length=50)
      'description' => string 'Отношения – это мир в котором мы живем. Связь «я и другой» , это то, в чем мы находимся постоянно. ' (length=175)
      'content' => string '&lt;p&gt;&lt;em&gt;Отношения&lt;/em&gt; &amp;ndash; это мир в котором мы живем. Связь &amp;laquo;я и другой&amp;raquo; , это то, в чем мы находимся постоянно. Существование человека возможно только во взаимодействии с другим. С одной стороны отношения &amp;mdash; это то, без чего невозможно. С другой &amp;ndash; это очень'... (length=2265)
      'preview' => string '208704-abstinence1-e1346602431670.jpg' (length=37)
      'url' => string 'tsikl-vebinarov-otnosheniya' (length=27)
      'created_at' => string '2017-10-19 22:12:31' (length=19)
      'updated_at' => string '2017-10-26 00:59:46' (length=19)
  private '_oldAttributes' (yii\db\BaseActiveRecord) => 
    array (size=8)
      'id' => int 12
      'title' => string 'Цикл вебинаров «Отношения»' (length=50)
      'description' => string 'Отношения – это мир в котором мы живем. Связь «я и другой» , это то, в чем мы находимся постоянно. ' (length=175)
      'content' => string '&lt;p&gt;&lt;em&gt;Отношения&lt;/em&gt; &amp;ndash; это мир в котором мы живем. Связь &amp;laquo;я и другой&amp;raquo; , это то, в чем мы находимся постоянно. Существование человека возможно только во взаимодействии с другим. С одной стороны отношения &amp;mdash; это то, без чего невозможно. С другой &amp;ndash; это очень'... (length=2265)
      'preview' => string '208704-abstinence1-e1346602431670.jpg' (length=37)
      'url' => string 'tsikl-vebinarov-otnosheniya' (length=27)
      'created_at' => string '2017-10-19 22:12:31' (length=19)
      'updated_at' => string '2017-10-26 00:59:46' (length=19)
  private '_related' (yii\db\BaseActiveRecord) => 
    array (size=1)
      'price' => 
        object(app\models\ServicesSpecialist)[186]
          private '_attributes' (yii\db\BaseActiveRecord) => 
            array (size=4)
              'id' => int 1
              'specialist_id' => int 38
              'service_id' => int 12
              'price' => int 1500
          private '_oldAttributes' (yii\db\BaseActiveRecord) => 
            array (size=4)
              'id' => int 1
              'specialist_id' => int 38
              'service_id' => int 12
              'price' => int 1500


object(app\models\Services)[197]
  private '_attributes' (yii\db\BaseActiveRecord) => 
    array (size=8)
      'id' => int 13
      'title' => string 'Консультирование родителей по вопросам детского развития' (length=107)
      'description' => string '' (length=0)
      'content' => string '&lt;p&gt;&lt;strong&gt;Рекомендуется тогда, когда:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;есть беспокойство на тему взаимоотношений с ребенком;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;нуждаетесь&amp;nbsp; в профессиональном информировании, переживаете о&amp;nbsp; психологических трудностях ребенка;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;желаете '... (length=609)
      'preview' => string '0bc410d7e8a0d0bcde1d0d821f2d9b5d1834ca98.jpg' (length=44)
      'url' => string 'konsultirovanie-roditeley-po-voprosam-detskogo-razvitiya' (length=56)
      'created_at' => string '2017-10-19 22:35:01' (length=19)
      'updated_at' => string '2017-10-26 01:03:58' (length=19)
  private '_oldAttributes' (yii\db\BaseActiveRecord) => 
    array (size=8)
      'id' => int 13
      'title' => string 'Консультирование родителей по вопросам детского развития' (length=107)
      'description' => string '' (length=0)
      'content' => string '&lt;p&gt;&lt;strong&gt;Рекомендуется тогда, когда:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;есть беспокойство на тему взаимоотношений с ребенком;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;нуждаетесь&amp;nbsp; в профессиональном информировании, переживаете о&amp;nbsp; психологических трудностях ребенка;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;желаете '... (length=609)
      'preview' => string '0bc410d7e8a0d0bcde1d0d821f2d9b5d1834ca98.jpg' (length=44)
      'url' => string 'konsultirovanie-roditeley-po-voprosam-detskogo-razvitiya' (length=56)
      'created_at' => string '2017-10-19 22:35:01' (length=19)
      'updated_at' => string '2017-10-26 01:03:58' (length=19)
  private '_related' (yii\db\BaseActiveRecord) => 
    array (size=1)
      'price' => 
        object(app\models\ServicesSpecialist)[203]
          private '_attributes' (yii\db\BaseActiveRecord) => 
            array (size=4)
              'id' => int 2
              'specialist_id' => int 40
              'service_id' => int 13
              'price' => int 0
          private '_oldAttributes' (yii\db\BaseActiveRecord) => 
            array (size=4)
              'id' => int 2
              'specialist_id' => int 40
              'service_id' => int 13
              'price' => int 0

В таблице services_specialist
id | specialist_id | service_id | price 
1	38	             12	       1500
6	38	             13	       2000


Как решить данную проблему?
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
Возможно дам Вам подсказку, как решить проблему.
Сам недавно сталкивался с подобным, решил проблему добавлением $key в цикл. Мне надо было получить цены на товар и после первой итерации цену подставляло для следующего тарифа.
Вот, третий абзац.
В цикле грубо и нагло, для визуального контроля сделайте
foreach($model as $key => $value){
  echo $key . ' - ' . $value;
}

Я не могу понятней объяснить, скажу только то, что когда добавил $key всё стало на свои места.
Ответ написан
mrspd
@mrspd
Посмотрите запросы в debug-панели и сразу ясно станет что не так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы