Как получить значение объекта из базы данных, хранящейся как json - PullRequest
1 голос
/ 26 апреля 2020

Я сохранил данные в формате json

        $data = [
            'applicant_name' => auth()->user()->name,
            'post_held' => getDesignation(auth()->user()->designation_id)->name,
            'department' => request('department')
        ];

        $leave = new Leave;

        $leave->user_id = auth()->user()->id;
        $leave->data = json_encode($data);

        $leave->save();

Как их получить, если я хочу отобразить имя_презента из поля данных?

Я пытаюсь -

        $leave = Leave::find($leave_id);

        return $leave->data['applicant_name'];

Если я дд ($ уйти), то это дает мне

    "id" => 2
    "user_id" => 7
    "data" => "{"applicant_name":"Mousumi Roy","post_held":"Administrative Officer Judicial","department":"Computer"}"
    "created_at" => "2020-04-25 17:38:25"
    "updated_at" => "2020-04-25 17:38:25"

Ответы [ 2 ]

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

Вы можете использовать для этого массив приведения, который вы можете увидеть в do c: https://laravel.com/docs/7.x/eloquent-mutators#array -and- json -casting

в вашей модели, используйте

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Leave extends Model
{
    protected $casts = [
        'data' => 'array',
    ];
}

тогда в вашем коде вам не нужно использовать json_decode или json_encode, просто:

        $leave = new Leave;
        $leave->data = $data;
        $leave->save();

и

        $leave = Leave::find($leave_id);
        return $leave->data['applicant_name'];
0 голосов
/ 26 апреля 2020

Сначала Вам нужно получить объект для ex: $leave, а затем получить доступ к данным с помощью:

$data = $leave->data или $data = $leave['data']

, но его закодировать, поэтому попробуйте декодировать его с помощью $decoded = json_decode($data)

В конце вы можете получить доступ к applicant_name с помощью $decoded->applicant_name

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