代码之家  ›  专栏  ›  技术社区  ›  BARNOWL

使用rateYo和willvincent/laravel rateable

  •  1
  • BARNOWL  · 技术社区  · 6 年前

    我正在尝试获取评级的属性,但是我得到了

    PHP注意:未定义的索引:rating in /Applications/MAMP/htdocs/eliating/app/Book.php第33行

    即时消息使用 laravel ratable

    理想情况下,我想获取用户评级。

    所以我可以像这样用刀锋来召唤它

    {{ $book->getRatingAttribute}}

    所以它可以输出例如

    4.5

    Book.php文件

    <?php
    use willvincent\Rateable\Rateable;
    use App\User;
    use App\Rate;
    
    public function getRatingAttribute()
    {
        return Rate::where('rating', $this->attributes['rating']);
    }
    

    率.php

    <?php
    
    namespace App;
    
    
    use App\User;
    
    use Illuminate\Database\Eloquent\Model;
    use willvincent\Rateable\Rateable;
    
    class Rate extends Model
    {
        protected $fillable = [
            'user_id',
            'rating'
        ];
    
    
        public $timestamps = false;
    
        protected $table = 'ratings';
    
    
    }
    

    架构

    class CreateRatingsTable extends Migration
    {
        /**
         * Run the migrations.
         */
        public function up()
        {
            Schema::create('ratings', function (Blueprint $table) {
                $table->increments('id');
                $table->timestamps();
                $table->integer('rating');
                $table->morphs('rateable');
                $table->unsignedInteger('user_id')->index();
                $table->index('rateable_id');
                $table->index('rateable_type');
                $table->foreign('user_id')->references('id')->on('users');
            });
        }
    
        /**
         * Reverse the migrations.
         */
        public function down()
        {
            Schema::drop('ratings');
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   rkj    6 年前

    你在用 https://github.com/willvincent/laravel-rateable 收费包裹。如果你看的话 rateable trait有你可以使用的所有功能,你可以检查它 here

    所以在模板中显示评分 {{ $book->averageRating}} 提交评分时,您可以使用 hidden 字段。所以,在形式上应该是这样的

    <div id="rateYo" data-rateyo-rating="{{ $book->averageRating or 0}}"> ></div>
    <input name="rating" value='{{ $book->averageRating or 0}}' type="hidden" id="val">
    

    这里是 rateYo javascript库更改 rating 值和它保存在隐藏字段中。