O
O
onahapa2015-10-31 20:01:49
MySQL
onahapa, 2015-10-31 20:01:49

How to output data correctly, yii2?

Hi all!
Two tables: country (id, country_name) and mark (id, country, mark).
record example:
country: 1, russia
mark: 1, 1 (country.id), lada
Output:

<?php foreach ($countrys as $country): ?>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                <?= Html::encode("{$country->country_name}") ?><span class="caret"></span></a>
                <ul class="dropdown-menu">
                    <li>
                        <a href="#"><?= Mark::menu($country->id) ?></a>
                    </li>
                </ul>
            </li>
        <?php endforeach; ?>

menu function in Mark class:
class Mark extends ActiveRecord
{
    public static function menu($id)
    {
        $query = self::find();
        $mark = $query->where(['country' => $id])->all();

        $mass = array();
        foreach ($mark as $myMark) {
            $mass[] = $myMark->mark;
        }
        return $mass;

    }
}

and code in controller:
public function actionIndex()
    {
        $query = Country::find();
        $countrys = $query->orderBy('country_name')
            ->all();

        return $this->render('index', [
            'countrys' => $countrys,
        ]);
    }

on an output I receive:
Russia
--array
Help to understand. Thanks :)

Answer the question

In order to leave comments, you need to log in

2 answer(s)
B
bears, 2015-10-31
@onahapa

Your Mark::menu($country->id) returns an array.

O
onahapa, 2015-11-02
@onahapa

for bears

foreach ($query_country as $country) {
            $query_mark = self::findAll([$country->id]);
                $mass[] = [
                    'label' => $country->country_name,
                    foreach ($query_mark as $mark) {
                        'items' => [
                            [
                                'label' => $mark->mark,
                                'url' => ['#']
                            ],
                        ]
                    }
                ];
        }

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question