Laravel - Установить данные коллекции из другой коллекции - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть две таблицы: products и colors.

Продукты

id | product_name | color_id
----------------------------
1  | Product 1    | 1
2  | Product 2    | 2

Цвета

id | name
---------
1 | blue
2 | silver
3 | green

И у меня есть коллекция:

$product = Product::all();

И я хочу иметь еще одну коллекцию из таблицы color с цветами, которая существует в коллекции product. Поэтому я хочу видеть цвета: синий (продукт 1) и серебро (продукт 2) без зеленого. Возможно ли получить что-то подобное? Я думаю об отношениях, но я не уверен, как это сделать. Благодаря.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

возможно можете попробовать это, в вашей модели COlors определите отношение к продуктам

/**
 * Get the products for the color.
 */
public function products()
{
    return $this->hasMany('App\Products','color_id');
}

, и вы можете получить доступ ко всем продуктам из цветовой модели,

$colorswithproducts = Colors::whereHas('products')->get();

dd($colorswithproducts);

1 => [
    'name' => 'blue'
    'products' =>
    [
        "id" : "1",
        'name' => ....
    ] 
 ]
0 голосов
/ 21 февраля 2020

Если вы хотите взять цвета из таблицы цветов, которые назначены для любого продукта, вы можете сделать это следующим образом:

$products = Product::all();
$assigned_color_ids = $products->pluck('id')->toArray();
$colors = Color::whereIn('id', $assigned_color_ids)->get();

Для данной таблицы запрос будет whereIn('id', [1, 2]), потому что цвет с идентификатором 3 не используется в таблице продуктов

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