使用 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(取决于数据库),你还必须 cast
到 array
。
向我们提供更多信息,以便我们帮助您这样做...
不要这样做。
一个产品有很多个链接。
在 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)
我有一个数组。现在我将它保存到数据库中:
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(取决于数据库),你还必须 cast
到 array
。
向我们提供更多信息,以便我们帮助您这样做...
不要这样做。
一个产品有很多个链接。
在 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)