使用 laravel 保存数组?

Save an array with laravel?

我有一个数组。现在我将它保存到数据库中:

public function store(Request $request)
{
    $link = ['http://localhost.loca/image/img-1627019138.jpg'];

    $product = new Product();
    $product->link = $link;
    $product->save();
}

它给出了这样的错误:

Array to string conversion

我想以以下形式保存到数据库:

['http://localhost.loca/image/img-1627019138.jpg']

因为链接比较多所以要在字段中保存为数组

如错误所述,您正试图在 text 字段中保存 array...您必须更改列才能存储数组。它应该是一个文本列或 json(取决于数据库),你还必须 castarray

向我们提供更多信息,以便我们帮助您这样做...

不要这样做。

一个产品有很多个链接。

在 Laravel 中使用 one to many 关系。

这也将确保您的数据库至少在 1st normal form

片段:

public function store(Request $request){
    $links = ['http://localhost.loca/image/img-1627019138.jpg','http://localhost.loca/image/img-1627019139.jpg'];

    $product = new Product();
    // add product name etc
    $product->save();


    // you can do the below once you have defined the relationship
    // assuming link_url is a column in links table
    $link_models = [];
    foreach($links as $link){
        $link_models[] = new App\Link(['link_url' => $link]);
    }
    $product->links()->saveMany($link_models);
}

Mysql 尚不支持存储如此复杂的值。也许你这样做:

public function store(Request $request)
{
    $link = ['http://localhost.loca/image/img-1627019138.jpg'];
    $product = new Product();
    $product->link = json_encode($link);
    $product->save();
}

如果保存到mysql时出现错误:

[\'http:\/\/localhost.loca\/image\/img-1627019138.jpg\']

然后你可以使用:json_encode($link, JSON_UNESCAPED_SLASHES)