Как я могу просмотреть данные, полученные из базы данных в моем gridview с помощью PHP? - PullRequest
0 голосов
/ 04 марта 2019

Я застрял с той же проблемой в течение 2 дней.Сейчас я работаю над тем, как отобразить значение из базы данных, которое имеет отношение ко многим.

. Дело теперь мне нужно искать номер счета из таблицы счетов в базе данных, которую я сделал, но я застрял сОтображение значения, в котором значение счета № из таблицы счетов, имя коллекции из таблицы сбора, имя организации из таблицы организации соотносятся с идентификатором счета в таблице счета, относятся к таблице счета в идентификаторе счета и должны отображать полное имя (полное + последнее имя клиента)).

это мои счета Контроллер

public function actionLoadRequest($order_number)
    {
        if (!Yii::$app->request->isAjax) {
            return $this->asJson([
                "status" => false,
                "message" => "Unknown request method.",
                "data" => []
            ]);
        }

        $data = Bill::find()->where(['bill_no'=>$order_number])->one();


        return $this->asJson([
            "status" => true,
            "message" => "",
            "data" => $data
        ]);
    }

это мое мнение

<template v-if="isLoading">
                                                <tr>
                                                    <td colspan="7" class="center aligned">Processing...</td>
                                                </tr>
                                            </template>
                                            <template v-else>
                                                <template v-if="data.length > 0">
                                                    <tr v-for="$bill in data">
                                                        <td>{{bill.bill_no}}</td>
                                                        <td>{{bill.collection}}</td>
                                                        <td>{{bill.organization}}</td>
                                                        <td>{{account.first_name + " " + account.last_name}}</td>
                                                        <td>{{bill.currency + " " +
                                                            bill.Amount}}
                                                        </td>
                                                    </tr>
                                                </template>
                                                <template v-if="data.length === 0">
                                                    <tr>
                                                        <td colspan="7" class="center aligned">No request data.</td>
                                                    </tr>
                                                </template>
                                            </template>

это мой JavaScript

methods: {
                loadRequest: function () {
                    console.log(this.bill_no);
                    if (this.bill_no === "") {
                        alert("Nothing to search. Please enter bill number.");
                        return;
                    }

                    let self = this;

                    self.isLoading = true;

                    $.ajax({
                        url: "<?= Url::to(["/admin/bills/load-request"]) ?>",
                        method: 'GET',
                        type: 'GET',
                        dataType: 'json',
                        data: {order_number: this.bill_no}
                    }).done(function (data) {
                        if (data.status) {

                            self.data = data.data;

                        } else {
                            alert(data.message);
                            self.data = [];
                        }
                        console.log(data);
                        self.isLoading = false;
                    }).fail(function (jqXHR) {
                        if (jqXHR.responseJSON) {
                            alert("Nothing to search. Please enter bill number.");
                        } else {
                            alert("Nothing to search. Please enter bill number.");
                        }

                        self.isLoading = false;
                    });


                },

            },

Редактировать -----------------------------

Я решил проблему с отображением данных из базы данных, изменив код в моем контроллере

$data = Bill::find()
            ->where(['bill_no'=>$bill_number])
            ->asArray()
            ->all();

но у меня проблема с отношениями, так как я все еще новичок с vue js.

мой взгляд

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Я предлагаю использовать Pjax.В Pjax у вас есть история событий AJAX без обновления страницы.

Кроме того, вы можете иметь чистый код в вашем файле Action, View и JS.

Справку можно найти в полной ссылке: Учебник по Yii2 Pjax

0 голосов
/ 05 марта 2019

в своем классе модели Билла создайте имена методов getCollection (), как показано ниже

// this function declare a relation named `collection`, notice the C in getCollection is upper case
public function getCollection()
{
    // the `id` is a column in table collection, `collection_id` is a column in table bill, `Collection` is the model class correspond with table collection
    return $this->hasOne(Collection::class, ['id' => 'collection_id']);

    // if you define foreign key in collection table to refer `id` in bill table, use following
    return $this->hasOne(Collection::class, ['bill_id' => 'id']);
}

, затем в контроллере добавьте with вызов функции с аргументом collection

$data = Bill::find()
            ->where(['bill_no'=>$bill_number])
            // there `collection` is the relation you just create, make sure its name is correct, notice the letter case 
            ->with('collection')
            ->asArray()
            ->all();

после этого вы узнаете, что $ data ['collection'] - это та коллекция, которую вы ожидали.Точно так же добавьте другие отношения в свой класс модели Билла и вызовите функцию with с вашим отношением в качестве аргумента.

обратитесь к этому https://www.yiiframework.com/doc/guide/2.0/en/db-active-record#declaring-relations

надеюсь помочь вам

0 голосов
/ 04 марта 2019

Полагаю, вам нужно что-то подобное?

$data = Bill::find()->where(['bill_no'=>$order_number])->one();
$account_name = $data->collection->organization->account->name;

Очевидно, что коллекция, организация и учетная запись - это имена отношений, сделанные в вашей модели счетов.

Надеюсь, это немного помогло.

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...