【问题标题】:one to one relationship in laravel (Error)laravel 中的一对一关系(错误)
【发布时间】:2017-01-09 00:41:17
【问题描述】:

我是 Laravel 的新手,当我练习时出现错误。
在 HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\ htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) 在 routes.php 第 144 行

我的 routes.php 文件

Route::get('/user/{id}/post',function ($id){
  return  User::find($id)->post->title;

});

在我的 User.php 文件中

public function post(){
    return $this->hasOne('App\Post');
}

我有两个表 1-posts 2-users
我也有 Post class
我也谷歌和搜索不同的网站,但无法理解。 请问我,如何摆脱这个错误。

【问题讨论】:

  • 我相信是因为没有具有该关联 ID 的用户
  • 不,我在数据库里
  • 你能用 User::find($id) 和 User::find($id)->post 测试吗
  • 是的,我收到了{"id":1,"name":"xyz","email":"ak.zu32@gamil.com","created_at":null,"updated_at":null}
  • 当我编码User::find($id)->post .its 显示我空白页面没有任何错误。

标签: php laravel laravel-routing


【解决方案1】:

您的帖子是一个用户。 这种关系是“一对多”的关系。 因此,您必须在模态用户中使用此方法:

 public function posts()
 {
    return $this->hasMany('App\Post');
 }

一对多是来自帖子的数组。 对于显示结果,您必须使用 foreach :

  $comments = App\Post::find(1)->comments;
  foreach ($comments as $comment) {
          $comment->title ;
  }

并阅读此链接:https://laravel.com/docs/5.2/eloquent-relationships#one-to-many

【讨论】:

  • 但同样的错误at HandleExceptions->handleError('8', 'Undefined property: Illuminate\Database\Eloquent\Collection::$title', 'C:\xampp\htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) in routes.php line 144
【解决方案2】:

1:你确定关系是一对一的吗? 2:如果你shure添加主外键并在Post模型中添加此功能。

public function user(){
    return $this->hasOne('App\User','id','user_id');
}

【讨论】:

  • 现在我遇到了同样的错误! at HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) in routes.php line 144
猜你喜欢
  • 2018-10-21
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 2014-08-22
  • 1970-01-01
  • 2018-10-03
相关资源
最近更新 更多