preg_replace (): Несоответствие параметра, шаблон - строка, а замена - массив в laravel - PullRequest
0 голосов
/ 12 февраля 2020

Я получаю $id значение JSON, когда я использую $id в $tracks WHERE предложении, это показало мне эту ошибку

preg_replace (): Несоответствие параметра, шаблон является строкой, в то время как замена является массивом

Это показано так:

Array
    $id = (
    [0] => Array
        (
            [4843] => 4843
            [4844] => 4844


        )

    [1] => Array
        (
            [396] => 396

        )

    [2] => Array
        (
            [3963] => 3963

        )
    )

Мой контроллер:

$track = Input::get('tracks');
$id = [];
foreach($track as $key => $tracks)
{
  $id[] = json_decode($tracks, true);
}

$tracks = Element::with(
    'composers', 
    'format_mp3s', 
    'loopsets.format_mp3s', 
    'mixes.format_mp3s', 
    'opening_key', 
    'closing_key', 
    'speed', 
    'mood', 
    'metre', 
    'tonic'
)
->where('id', $id)
->orderBy($sortBy, $dir)
->get();

1 Ответ

2 голосов
/ 12 февраля 2020

Вы используете условие $ids в where, которое является ассоциативным массивом, поэтому вы получаете эту ошибку.

Вы можете попробовать следующий код, чтобы получить только массив ids, а затем передать их как whereIn условие для получения желаемого результата

$newIds = [];
  foreach ($ids as $value) {
    foreach($value as $finalValue) {
      $newIds[] = $finalValue;
   }
}

Используйте whereIn вместо where

->whereIn('id', $newIds);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...