Laravel Попытка получить свойство необъекта - отобразить данные из другой таблицы с помощью API - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть две таблицы:

1) таблица состояния ip 2) таблица состояния

В базе данных id состояния является внешним ключом для таблицы состояния ip. Я хочу отобразить «белый список» вместо «2»

таблица состояния ip:

+==============+===============+============+
| ip_status_id |  ip_address   | status_id  |
+==============+===============+============+
|     1        |  192.108.1.1  |      2     |
+--------------+---------------+------------+

таблица состояния:

+============+================+
| status_id  |     status     |
+============+================+
|    1       |    Blacklist   |
+------------+----------------+
|    2       |    Whitelist   |
+------------+----------------+

, и я вызываю его через API с запрос, как это:

$stmt = $db->prepare("SELECT  * FROM tbl_ip_statuses left join 
    tbl_status on tbl_ip_statuses.status_id = tbl_status.status_id 
    WHERE tbl_ip_statuses.is_active = ? 
    AND tbl_ip_statuses.is_deleted = ? 
    group by tbl_ip_statuses.ip_status_id");

$stmt->bind_param("ii", $_GET["is_active"], $_GET["is_deleted"]);

И я делаю проверку на контроллере, выборка данных точно так, как я хочу

checking result

Вот мой контроллер:

$listing = json_decode($ip_status);
//dd($listing);
return view('ip_status.listing')->with("ip_status", $listing);

Вот мой взгляд:

 @if($ip_status)
    @foreach($ip_status as $data)
        <td class="uk-width-1-2">{{ $data->s_ip }}</td>
        <td class="uk-width-1-2">{{ $data->s_status }}</td>

Но затем он показывает попытку получить свойство s_ip не объекта.

, когда я print_r($listing)

stdClass Object (
    [ip_statuses] => Array (
        [0] => stdClass Object (
            [ip_status_id] => 1
            [s_ip] => 192.108.1.1
            [status_id] => 2
            [is_active] => 1
            [ip_status_id_create] => 0
            [dt_create] => 2020-04-15 17:16:06
            [ip_status_id_edit] => 0 
            [dt_edit] => 
            [is_deleted] => 0 
            [ip_status_id_delete] => 0 
            [dt_delete] => 
            [s_status] => Whitelist 
            [status_id_create] => 0 
            [status_id_edit] => 0 
            [status_id_delete] => 0 
        )

        [1] => stdClass Object ( 
            [ip_status_id] => 2 
            [s_ip] => 1922.131.100.1 
            [status_id] => 1 
            [is_active] => 1 
            [ip_status_id_create] => 0 
            [dt_create] => 2020-04-15 17:15:29 
            [ip_status_id_edit] => 0 
            [dt_edit] => 
            [is_deleted] => 0 
            [ip_status_id_delete] => 0 
            [dt_delete] => 
            [s_status] => Blacklist 
            [status_id_create] => 0 
            [status_id_edit] => 0 
            [status_id_delete] => 0
        ) 

        [2] => stdClass Object ( 
            [ip_status_id] => 3
            [s_ip] => 1.1.1.1
            [status_id] => 2
            [is_active] => 1
            [ip_status_id_create] => 0
            [dt_create] => 2020-04-15 17:16:06 
            [ip_status_id_edit] => 0 
            [dt_edit] => 
            [is_deleted] => 0 
            [ip_status_id_delete] => 0 
            [dt_delete] => 
            [s_status] => Whitelist 
            [status_id_create] => 0
            [status_id_edit] => 0 
            [status_id_delete] => 0
        )
    )
)

1 Ответ

1 голос
/ 17 апреля 2020

ip_statuses в массиве, как я вижу из результата dd, вы можете получить доступ к s_ip другим элементам, подобным этому $ list ['s_ip']

Обновление:

Ваши данные достигают блейда как один 'ip_statuses', в котором есть элементы массива, поэтому вам нужно изменить контроллер, куда вы отправляете данные для просмотра:

return view(...)->with(‘ip_status’, $listing->ip_statuses);

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