首页 > 解决方案 > Laravel 从 mysql 表中显示刀片视图的数据

问题描述

我只是做一些尝试来可视化充满工厂faker fzaninotto的mysql表的数据。

这是我的工厂文件:

$factory->define(Boat::class, function (Faker $faker) {
return [

        'name'=> $faker -> name,
        'images' => json_encode(["description" => $faker->sentence($nbWords = 2, $variableNbWords = true),
                                 "url" => $faker->imageUrl($width = 800, $height = 600, 'cats', true, 'Faker', true),
                                 "sortOrder" => $faker->randomDigitNotNull] 
                               ),

];

这是迁移模式:

public function up()
{
    Schema::create('boats', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->json('images');
        $table->timestamps();
    });

控制器功能:

public function listBoats()
{
    $data = Boat::all();
    return view('frontendViews.listBoats',['data'=>$data]);
}

现在我可以使用 {{$boat->name}} 访问数据以获取船的名称,但是如何获取图像 src 链接的 url?

    'name'=> $faker -> name,
'images' => json_encode(["description" => $faker->sentence($nbWords = 2, $variableNbWords = true),
                                     "url" => $faker->imageUrl($width = 800, $height = 600, 'cats', true, 'Faker', true),
                                     "sortOrder" => $faker->randomDigitNotNull] 
                                   ),

谢谢

标签: mysqllaravel

解决方案


由于您{{ $boat->name }}用于访问名称,因此您可以使用{{ $boat->images }}来访问图像的 JSON 格式字符串

由于图像以 JSON 格式存储在数据库中(如您所述),因此 JSON 格式的字符串应如下所示:

{
  "description" : "this is the image of a car",
  "url" : "https://somewhere.com/img/car.png",
  "sortOrder" : 1
}

为了访问 URL,您需要对 JSON 进行“解码”/“反序列化”/“解析”,然后获取“URL”键/属性

json_encode()在原生 PHP 中,您使用和进行 JSON 序列化和反序列化json_decode()

因此,为了获取图像 URL:{{ json_decode($boat->images, true)["url"] }}

如果您需要有关 JSON 格式的参考:


推荐阅读