微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

页面浏览量 LARAVEL

如何解决页面浏览量 LARAVEL

我还是 laravel 的新手,我想在我的页面上实现访问者/查看计数器,我到处寻找并找到了一种方法,但是当我尝试它时,它似乎无法正常工作,视图始终为 0。

>

这是存储视图的表:

Schema::create('views',function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->morphs('viewable');
        $table->timestamps();
    });

这是视图模型:

class views extends Model
{
protected $table = 'views';
protected $guarded = ['id'];
}

这些是我添加到模型中的功能,我想计算它的访问者:

public function views()
{
    return $this->morphMany(
        \App\Models\views::class,'viewable'
    );
}

public function getViewsCount()
{
    return $this->views()->count();
}

public function getViewsCountSince($sinceDateTime)
{
    return $this->views()->where('created_at','>',$sinceDateTime)->count();
}

public function getViewsCountUpto($uptoDateTime)
{
    return $this->views()->where('created_at','<',$uptoDateTime)->count();
}

我像这样调用了我的刀片中的函数

<i class="fa fa-eye"></i> {{$details->getViewsCount()}} Views

我获得了 0 次观看,我不知道这是否有效,或者我做错了什么.. 请提供任何想法!

解决方法

我能看到的问题是关系。

View 模型包含 viewable_id 和 viewable_type,因此关系应该是 MorphTo。 然后例如,如果 Post 模型可以有视图,那么这将具有 MorphMany 关系。

您正在创建此处记录的一对多多态关系 https://laravel.com/docs/8.x/eloquent-relationships#one-to-many-polymorphic-relations

此外,查看 withCount 方法,https://laravel.com/docs/8.x/eloquent-relationships#counting-related-models 可能更适合您的需求。因此,您可以执行以下操作:

Post::withCount('views');

或者如果您需要根据查看完成时间过滤计数。

Post::withCount([
    'views' => function ($query) { 
        $query->where('created_at',>=,$someDate) 
    }
]);

然后您可以像 $posts[0]->views_count 一样访问它。

编辑:

我还要补充一点,以确保如果您手动添加数据,viewable_type 值需要看起来像这样 App\Models\View 或在 Laravel 版本 7 或更低版本中,文件的默认位置将是 {{1} },但这取决于模型的位置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?