如何正确地更新数据库中的多个数据

10 浏览
0 Comments

如何正确地更新数据库中的多个数据

我正在跟着Laracasts的视频学习:基本的模型/控制器/视图工作流程

我有一个包含联系信息的表。

CREATE TABLE `about` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

我尝试在控制器文件中使用以下代码将数据传递给视图:

public function index()
{
    $about = Page::where('page', 'about-me')->get(); //id = 3
    return view('about', compact('about'));
}

当我尝试像下面这样显示代码时,我收到一个错误:

@section('title')
    {{$about->title}}
@stop
@section('content')
    {!! $about->content !!}
@stop

错误信息为:

此集合实例上不存在属性[title]。(视图:E:\laragon\www\newsite\resources\views\about.blade.php)

但是,如果我在控制器文件中更改检索方法,它就可以工作。

public function index()
{
    $about = Page::find(3);
    return view('about', compact('about'));
}

当我在第一个情况下(where()->get())使用dd($about)时,数据被封装在一个数组中。而在第二个情况下(find(3)),它按预期显示数据。

我做错了什么?

0
0 Comments

在使用工厂函数时,可能会遇到这个问题,所以我可以确认这是有效的语法:

$user = factory(User::class, 1)->create()->first();

如果你做了类似这样的操作,可能会看到集合实例错误:

$user = factory(User::class, 1)->create()->id;

所以将其更改为:

$user = factory(User::class, 1)->create()->first()->id;

问题的出现原因是在获取数据时,使用了错误的语法。解决方法是通过添加`first()`方法来获取集合中的第一个数据,然后再获取该数据的id。这样就可以正确地更新超过一个数据在数据库中。以上就是正确更新超过一个数据在数据库中的方法。

0