从数据库获取数据并传递给视图

fkvaft9z  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(300)

在控制器中,我试图从表中获取数据,然后将其传递给视图。

//controller
public function view($id)
{
    $contact = Contact::where('id', $id);

    return view('contact.edit', ['contact' => $contact]);
}

//view
@foreach($contact as $key=>$value)
    {{ $value }}
@endforeach

但我得到的只是一个空页,如果我试图用 {{ $contact->first_name}} 我刚收到错误 Undefined property: Illuminate\Database\Eloquent\Builder::$first_name .
我也尝试过使用find方法,但是得到了相同的结果。表架构:

CREATE TABLE `contacts` (
  `id` int(11) NOT NULL,
  `first_name` varchar(25) NOT NULL,
  `last_name` varchar(25) NOT NULL,
  `email` varchar(35) NOT NULL,
  `home_phone` int(10) DEFAULT NULL,
  `work_phone` int(10) DEFAULT NULL,
  `cell_phone` int(10) DEFAULT NULL,
  `best_phone` enum('home_phone','work_phone','cell_phone') NOT NULL,
  `address_1` varchar(100) DEFAULT NULL,
  `address_2` varchar(100) DEFAULT NULL,
  `city` varchar(35) DEFAULT NULL,
  `state` varchar(35) DEFAULT NULL,
  `zip` int(6) DEFAULT NULL,
  `country` varchar(35) DEFAULT NULL,
  `birth_date` date DEFAULT NULL,
  `manager` int(11) UNSIGNED NOT NULL
);
nnt7mjpx

nnt7mjpx1#

编辑:可能是因为你没有使用 ->first(); 在查询之后。
不确定为什么这样不行,你可以试试这个:

public function view($id)
{
    $contact = Contact::find($id);

    return view('contact.edit')->with('contact', $contact);
}

在您的视图中,您可以访问所有属性,如下所示:

{{$contact->id}}
{{$contact->first_name}}
//etc
2wnc66cl

2wnc66cl2#

Contact::where('id', $id) 仅使用查询生成器准备查询。您尚未执行查询或检索到任何结果。 Contact::where('id', $id)->first() 将执行查询并检索第一个结果,尽管 id 很可能是主键, Contact::find($id) 是获得与该id匹配的第一个结果的更快方法。

相关问题