gpt4 book ai didi

mysql - 如何在 Laravel 的一个表中连接外键不唯一的表

转载 作者:行者123 更新时间:2023-11-29 16:16:41 25 4
gpt4 key购买 nike

我有 2 个表(产品和位置),我需要从其中立即获取所有产品以及提供产品的位置。产品表如下所示:

Product| Price | Product_id
Rice | 45.00 | 101
Beans| 30.00 | 102

位置表如下所示:

Product_id | location
101 | Chicago
101 | Paris
101 | Lagos
102 | London
102 | New York

我正在使用 Laravel Eloquent Model 来尝试解决此问题,但我不断获得同一产品的多行。

我想要得到的结果:

$result = 
{
{"Rice",
45.00,
101,
location: {"Chicago", "Paris", "Lagos"}
},
{"Beans",
30.00,
102,
location: {"London", "New York"}
}
}

我们将不胜感激任何提供的帮助。

最佳答案

在 Laravel 中,您想要检索模型。因此,首先创建您的产品和位置模型。

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
// if you have no standard table naming
protected $table = 'products';

public function products()
{
// you have to specify the foreign key is Product id as it does not follow the laravel standard
$this->hasMany(Location::class, 'Product_id');
}
}

class Location extends Model
{
// if you have no standard table naming
protected $table = 'locations';

public function product()
{
return $this->belongsTo(Product::class, 'Product_id');
}
}

这意味着您现在可以检索您的产品。通过包含位置,以便其表现最佳。

$products = Product::with('locations')->get();

现在,产品将具有多个位置,就像表格绑定(bind)在一起的方式一样。你可以像这样检索它们。对于类似于你的结构。你的 JSON 根本无效。

$products = $products->map(function($product) {
$product->location = $product->locations->map(function($location){
return $location->location;
});

return $product;
})

您可能仍然希望将产品转换为漂亮的 JSON 响应,目前与您考虑的问题相比,这似乎很合适。

关于mysql - 如何在 Laravel 的一个表中连接外键不唯一的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com