Получить значение по значению имени столбца - PullRequest
0 голосов
/ 07 августа 2020

Ny массив выглядит примерно так:

Illuminate\Database\Eloquent\Collection {#2052 ▼
  #items: array:3 [▼
    0 => App\Models\NewsMeta {#2089 ▶}
    1 => App\Models\NewsMeta {#2090 ▶}
    2 => App\Models\NewsMeta {#2091 ▶}
  ]
} 

Если я открою массив 2:

 #original: array:7 [▼
        "id" => 17
        "post_id" => 240231
        "news_tag_id" => 5
        "meta_name" => "_thumbnail_id"
        "meta_value" => "240232"
        "created_at" => "2020-08-06 22:34:06"
        "updated_at" => "2020-08-06 22:34:06"
      ]

Теперь я хочу получить значение «240232», учитывая, что я ' ve 240231.

Как искать внутри массива объекта? Что-то вроде: где post_id - 240231, получите ts meta_value.

FYI: это не красноречивый запрос или запрос БД.

Ответы [ 2 ]

3 голосов
/ 07 августа 2020

Должно работать что-то вроде этого:

        $postId = 240231;
        $metaValue = null;
        foreach ($collection as $model) {
            if ($model->post_id == $postId) {
              $metaValue = $model->meta_value;
              break;
            }
        }
        echo $metaValue;

Вы также можете использовать метод коллекции seach :

    $postId = 240231;
    $metaValue = $collection->search(static function($model, $key) use($postId) {
        if ($model->post_id == $postId) {
            return $model->meta_value;
        }
    });
    echo $metaValue;
1 голос
/ 07 августа 2020

Вы можете использовать коллекцию firstWhere() метод

$collection->firstWhere('post_id', '240231')['meta_value'] ?? null;

С предоставленными вами данными это должно вернуть 240232. В наборе данных, где нет post_id = 240231, он вернет null.

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