Laravel - получение массива из коллекции MongoDB в laravel - PullRequest
0 голосов
/ 21 мая 2018

Хочу получить массив на laravel, Документ

{
    "_id" : ObjectId("5b030a1b5085321e84006eff"),
    "name" : "Amalendu kar",
    "Information" : {
            "email" : "amalkar@gmail.com",
            "comment" : "Ok",
            "website" : "example.com",
            "info" : {
                    "x" : 203,
                    "y" : 102
            },
            "versions" : [
                    "0.9.7",
                    "0.9.8",
                    "0.9.9"
            ]
    },
    "updated_at" : ISODate("2018-05-21T18:04:11Z"),
    "created_at" : ISODate("2018-05-21T18:04:11Z")

}

, и я использую эту команду, чтобы сохранить

public function store(Request $request)
{
    request()->validate([
        'name' => 'required',
        'email' => 'required',
        'website' => 'required',
        'comment' => 'required',
        'gender' => 'required',
    ]);

    //Data::insert($request->all());
    Data::create(['name' => $request->input('name'),
        "Information"=>[              
            "email" => $request->input('email'),
            "comment" => $request->input('comment'),
            'website' =>$request->input('website'),
            "info" => (object)array( "x" => 203, "y" => 102),
            "versions" => array("0.9.7", "0.9.8", "0.9.9")
        ]
    ]);

    return redirect('/') ->with( 'success', ' Done! ');
}

Теперь я хочуизвлеките поле 'name' и 'email' из Infromation, вот код, но я получаю ошибку.

@foreach ($data as $value)   
    <h1>{{ $value->name }}</h1>
    {{$content[] = $value->Information }}  
    @foreach ($content as $key)
        <h1>{{ $key->email }}</h1>
    @endforeach
@endforeach

Получение этой ошибки

"htmlspecialchars() expects parameter 1 to be string,

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Работает только так

@foreach ($data as $value )
    <h1>{{$value['name']}}</h1>
    <p>{{ $value->Information['email'] }}</p>
@endforeach
0 голосов
/ 21 мая 2018

Если вы используете библиотеку Laravel-MongoDb , используйте eloquent методы для извлечения данных в виде коллекции, как показано ниже:

$data = Data::where('name',$value)->first();
return $data->name; // must return name
return $data->information['email']; // must return email

Также, если вы хотите получить информацию в виде коллекции тоже, вы должны сами определить отношения или преобразовать в коллекцию с помощью метода Laravel collect(array).

Все должно быть в порядке.

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

@foreach ($data as $value)   
    <h1>{{ $value['name'] }}</h1>
    {{$content[] = $value['Information'] }}  
    @foreach ($content as $key)
        <h1>{{ $key['email'] }}</h1>
    @endforeach
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...