zoukankan      html  css  js  c++  java
  • Laravel5.1 搭建简单的社区(八)--展示评论

    增加评论功能需要创建新的表:

    php artisan make:migration create_comments_table --create=comments      
    php artisan make:model Comment                                    

    修改迁移文件:

        public function up()
        {
            Schema::create('comments', function (Blueprint $table) {
                $table->increments('id');
    
                // 评论段落
                $table->text('body');
                // user_id 属于哪个用户
                $table->integer('user_id')->unsigned();
                // discussion_id 属于哪篇文章
                $table->integer('discussion_id')->unsigned();
                // 声明user_id外键
                $table->foreign('user_id')
                      ->references('id')
                      ->on('users')
                      ->onDelete('cascade');
                // 声明discussion_id外键
                $table->foreign('discussion_id')
                      ->references('id')
                      ->on('discussions')
                      ->onDelete('cascade');
                
                $table->timestamps();
            });
        }

    在模型中声明关系方法,易于调用:

    class Comment extends Model
    {
        protected $fillable = ['body', 'user_id', 'discussion_id'];
    
        // 关联到discussion
        public function discussion()
        {
            return $this->belongsTo(Discussion::class);
        }
    
        // 关联到user
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    }
    class Discussion extends Model
    {
        protected $fillable = ['title', 'body', 'user_id', 'last_user_id'];
    
        // 关联到User
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    
        // 关联到comment
        public function comments()
        {
            return $this->hasMany(Comment::class);
        }
    }

    在user中:

        // 关联到comment
        public function comments()
        {
            return $this->hasMany(Comment::class);
        }

    新增加factory方法:

    $factory->define(AppComment::class, function ($faker) {
        $user_ids       = AppUser::lists('id')->toArray();
        $discussion_ids = AppDiscussion::lists('id')->toArray();
        return [
            'body' => $faker->paragraph,
            'user_id' => $faker->randomElement($user_ids),
            'discussion_id' => $faker->randomElement($discussion_ids),
        ];
    });

    在tinker中批量生成:

    factory('AppComment',50)->create();

    现在,我们可以随意在一篇文章中展示评论,修改show.blade.php:

        <div class="container">
            <div class="row">
                <div class="col-md-9">
                    <div class="blog-post">
                        {!! $text !!}
                    </div>
                    <hr />
                    @foreach($discussion->comments as $comment)
                        <div class="media">
                            <div class="media-left">
                                <a href="#">
                                    <img class="media-object img-circle" src="{{ $comment->user->avatar }}" alt="64x64" style=" 64px; height: 64px;">
                                </a>
                            </div>
                            <div class="media-body">
                                <h4 class="media-heading">{{ $comment->user->name }}</h4>
                                {{ $comment->body }}
                            </div>
                        </div>
                    @endforeach
                </div>
            </div>
        </div>
  • 相关阅读:
    SqlLite
    C# Sqlite 序列
    C#生成条形码 Code128算法
    【Ogre Beginner Guide】第二章 OGRE场景绘图
    【Ogre Beginner Guider】第一章 配置OGRE
    用户操作体验设计——小感触
    rails 调试
    mac下安装和使用brew
    如何使用 CCache 进行 Cocos2d-x 编译加速
    AndroidStudio使用和问题记录
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6684220.html
Copyright © 2011-2022 走看看