【问题标题】:Laravel Table relationship DynamodbLaravel 表关系 Dynamodb
【发布时间】:2016-12-07 19:31:41
【问题描述】:

我有一个问题 我想在一个页面中显示所有帖子

这是我的发电机

用户表:user_id |电子邮件 |姓名 |密码

posts 表:id |身体 | user_id

user_id 供我链接,所以一个用户有很多帖子。

我只是简单地使用 Auth::user()->user_id 来获取用户 ID 并请求正文来创建一个新的帖子项目

但是如何进行以下操作呢?

姓名(来自用户):正文(来自帖子)

Post.php

class Post extends \BaoPham\DynamoDb\DynamoDbModel
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }
    protected $table = 'posts';
    protected $fillable = array('id');
}

用户.php

class User extends \BaoPham\DynamoDb\DynamoDbModel implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;    
    public function posts()
    {    
        return $this->hasMany('App\Post');
    }    
    protected $table = 'users';
    protected $fillable = array('email');
    protected $primaryKey = 'user_id';
}

PostController.php

 class PostController extends Controller
    {
        public function getDashboard()
        {
            $posts = Post::all();        
            return view('dashboard', ['posts' => $posts]);
        }

dashboard.blade.php

@foreach($posts as $post)               
                <p>{{ $post->body }}</p>
                    by {{ $post->users->name}}                  

        @endforeach

加载仪表板页面时出错

试图获取非对象的属性(查看: 资源\视图\dashboard.blade.php)

但它只适用于 $post->body 谢谢!

【问题讨论】:

    标签: php laravel amazon-web-services


    【解决方案1】:

    其实在 laravel 表中应该有 id 作为主键。

    提到的关系不正确

    后模型:

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

    用户模型

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

    【讨论】:

    • 仍然有同样的错误。这对吗?" {{ $post->users->first_name }} "。以id为主键,是否应该将users表属性从user_id改为id?
    • 应该是这样的 {{ $post->user->first_name }}。它是用户而不是用户
    • 改成“用户”后又报错---ErrorException in BelongsTo.php line 50: Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsTo::__construct() must be an instance of Illuminate\Database\Eloquent\Builder, instance of BaoPham\DynamoDb\DynamoDbQueryBuilder given, called in MyProject\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 806 and defined (View: MyProject\resources\views\dashboard.blade.php)
    • 而不是扩展 \BaoPham\DynamoDb\DynamoDbModel 扩展模型并检查它。使用 Illuminate\Database\Eloquent\Model;
    • 你能检查posts表中的user_id是否是用户表引用的外键。如果不使其成为外键引用,并检查它是否为可空字段
    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2018-11-11
    • 2015-02-22
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多