如何在MySQL中使用Laravel,如果每个产品都支持语言和一些嵌套的支持信息...看见了解

how to use inside mysql with laravel if for each product supported languages with some nested supported info ... see to understand

提问人:Abdelrhman Qouay 提问时间:10/2/2023 最后编辑:ShadowAbdelrhman Qouay 更新时间:10/3/2023 访问量:43

问:

我正在将 Laravel 与 (MySQL)...我想做的是这样的:

for each product->>>
       langs 
          english:
             interface: true,
             subtitles: false,
             interface: true,
          ,
          arabic:
             interface: false,
             subtitles: true,
             interface: true,
          ,
          .........
          .........

但是...(每种语言都有自己的产品,例如一个标签或其他)

我希望通过上面关于每个 lang 行的嵌套信息的示例获得具有受支持语言的每个产品

请在您的回复中明确( laravel 或 mysql 或任何工具,使想法清晰

MySQL Laravel 嵌套

评论

0赞 Khayam Khan 10/2/2023
你准备好你的桌子了吗?
0赞 Abdelrhman Qouay 10/2/2023
不,还没有。.为什么(我只是希望这个想法只这样做,并将单独继续
0赞 Khayam Khan 10/2/2023
制作语言、产品和language_product表。language_product将是一个数据透视表,并且将具有 belongsToMany 关系,然后可以实现您想要的。可能还有其他一些方法,但我想到了这一点。如果你愿意,我可以在答案部分详细写
0赞 Abdelrhman Qouay 10/3/2023
所以你可以,如果工作,我会尝试,但请在回答时更清楚地说明想法,非常感谢
0赞 Khayam Khan 10/3/2023
当然我会尝试。

答:

0赞 Khayam Khan 10/3/2023 #1

语言模型

class Language extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class, 'language_product')
            ->withPivot('interface', 'subtitles');
    }
}

产品型号

class Product extends Model
{
    public function languages()
    {
        return $this->belongsToMany(Language::class, 'language_product')
            ->withPivot('interface', 'subtitles');
    }
}

您的数据透视表language_product将具有产品 ID 和语言 ID 以及其他字段,如界面、字幕等,您可以在关系中使用 Pivot 获取它

现在,您可以检索每个产品及其支持的语言。

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

foreach ($products as $product) {
  
   foreach ($product->languages as $language) {
       
   }
}

您可以从这里阅读更多内容 官方文档