如何使用Laravel Eloquent加入?

时间:2016-05-30 12:36:30

标签: php laravel-5.1

我有两张桌子。

users - id,name,title
posts - id,author

其中post.author = user.id

我的帖子模型如下。

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    public function users()
    {
       return $this->belongsTo('App\User');
    }
}

我使用Project::find(1)->users

但它给出了以下错误。

SQLSTATE[42S02]: Base table or view not found.

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您可以将代码更改为:

class Post extends Model
{
    public function user()
    {
       return $this->hasOne('App\User', 'id', 'author');
    }
}

这将通过调用Post::find(1)->user->id来从数据库中获取用户。

我建议将users更改为user,因为帖子只能有一位作者。

希望这有效!

答案 1 :(得分:0)

这应该改变

Project::find(1)->users

到这个

Post::find(1)->users

阅读本文

  1. Base table or view not found: 1146 Table Laravel 5

答案 2 :(得分:0)

你的帖子模型..

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    public function users()
    {
       return $this->belongsTo('App\User', 'author');
    }
}

现在用它作为..

Post::find(1)->users;

由于帖子只有一个创建者,因此您可以将users模型上的Post方法更改为user并将其用作

Post::find(1)->user;