dth8312
2018-11-13 14:49
浏览 359
已采纳

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

In controller I am trying to get data from table, and then pass it to the view.

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

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

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

But I get just empty page, and if I try to echo value with {{ $contact->first_name}} i just receive error Undefined property: Illuminate\Database\Eloquent\Builder::$first_name.
I also tried to use find method, but got the same result. Table schema:

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
);

图片转代码服务由CSDN问答提供 功能建议

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

  // controller 
public function view($ id)
 {
 $ contact = Contact :: where('id',$ id); 
 
 返回视图('contact.edit',['contact'=> $ contact]); 
} 
 
 // view 
 @ foreach($ contact as $ key => $ value)
 {  {$ value}} 
 @ endforeach 
   
 
 

但我只是空页,如果我尝试使用 {{$ contact-&gt ; first_name}} 我只是收到错误未定义属性: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`枚举('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 
); 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongshuogai2343 2018-11-13 14:54
    已采纳

    EDIT: Might be because you're not using ->first(); after the query.

    Not really sure why that wouldn't work, you can try this instead:

    public function view($id)
    {
        $contact = Contact::find($id);
    
        return view('contact.edit')->with('contact', $contact);
    }
    

    Then in your view you can access all properties like so:

    {{$contact->id}}
    {{$contact->first_name}}
    //etc
    
    已采纳该答案
    打赏 评论
  • dougeqiang1619 2018-11-13 14:55

    Contact::where('id', $id) only prepares a query with the query builder. You haven't yet executed the query or retrieved any results.

    Contact::where('id', $id)->first() will execute the query and retrieve the first result, although since id is likely the primary key, Contact::find($id) is a quicker way to get the first result matching that id.

    打赏 评论

相关推荐 更多相似问题