array_merge (): аргумент # 1 не является массивом в laravel 5.5 - PullRequest
0 голосов
/ 25 апреля 2018

Я столкнулся с некоторой проблемой, и это о array_merge в laravel Метод кода моего контроллера:

    public function isConnectedMA()
{
    $user_id = Auth::user()->id;
    if(!empty($user_id)) {
        $isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get();
        $isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get();
    }
        $MergeArray = array_merge($isConnectedM,$isConnectedA);
    $resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
    return Response::json($resultArray,200);

}

ошибка, с которой я сталкиваюсь -

array_merge (): аргумент # 1 не является массивом

я не знаю, где я не прав любая помощь будет высоко оценена!

Ответы [ 5 ]

0 голосов
/ 25 апреля 2018

$isConnectedM и $isConnectedA не arrays. Вы также можете использовать typecast для преобразования object в array.

$isConnectedM = (array) DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get();
$isConnectedA = (array) DB::table('user_mlc_aweber')->where('user_id', $user_id)->get();
0 голосов
/ 25 апреля 2018

@ Шахзад, Причиной возникновения проблемы для array_merge мы должны передать два массива, если мы не передадим, это выдаст ошибку.

 public function isConnectedMA() {
    $user_id = Auth::user()->id;
    // If user id is not passed, return or redirect to login page.
    if (empty($user_id) {
        // TODO : Do logic to retun
        $resultArray = ['status' => 0, 'message' => 'OOPS! seems like user is not logged in.', 'dataArray' => []];
        return Response::json($resultArray, 401);
    }

    $isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get()->toArray();
    $isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get()->toArray();
    $MergeArray = array_merge($isConnectedM,$isConnectedA); // array_merge((array)$isConnectedM, (array)$isConnectedA);
    $resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
    return Response::json($resultArray,200);
}

Ссылка arry_merge - http://php.net/manual/en/function.array-merge.php

0 голосов
/ 25 апреля 2018

В laravel ->get(); возвращает объект коллекции, вы должны использовать ->toArray() здесь.

0 голосов
/ 25 апреля 2018

$ isConnectedM и $ isConnectedA - это объект коллекции.Response::json($collection,200); автоматическое преобразование объекта в json

$MergeArray = $isConnectedM->merge($isConnectedA) ;
$resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
return Response::json($resultArray,200);
0 голосов
/ 25 апреля 2018

Используйте toArray () для преобразования collections в массив

$isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get()->toArray();
$isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get()->toArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...