2016-05-09 3 views
1

В моей базе данных у меня есть размеры и категория, они имеют таблицу, чтобы соответствовать их вместе называют category_sizes, который выглядит следующим образом:Laravel возвращается только один столбец

table fields screenshot

Я хочу, чтобы получить массив со всеми size_id где category_id = 4 так что я сделал:

$catSizes = CategorySize::where('category_id', 4)->value('size_id'); 
return($catSizes); 

Но он возвращает только один результат. Как я могу получить массив со всеми size_ids, поэтому я могу использовать его позже в инструкции where_in.

Я также попытался сорвать, но это дает также только один ряд.

$catSizes = CategorySize::where('category_id', 4)->pluck('size_id'); 
dd($catSizes); 

Моя CategoySize модель

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class CategorySize extends Model 
{ 
    protected $table = 'category_sizes'; 
} 

ответ

2

Попробуйте это:

DB::table('category_sizes')->where('category_id', 4)->get('size_id'); 

Или:

DB::table('category_sizes')->select('size_id')->where('category_id', 4)->get(); 
+1

благодаря его работе;) –

+0

Просто для моего интереса: Есть ли причина почему вы предложили «DB :: table» вместо использования модели? –

+0

@Peh, я думаю, что здесь также можно использовать Eloquent ('-> pivot' и -'> withPivot'): https://laravel.com/docs/5.1/eloquent-relationships#many-to-many - но я не смог опубликовать рабочий код без проверки (у меня нет достаточно времени для этого сейчас, извините). –

Смежные вопросы