gpt4 book ai didi

php - 具有附加函数和传递参数的 Laravel 模型

转载 作者:行者123 更新时间:2023-11-29 20:40:00 25 4
gpt4 key购买 nike

所以我有 &*^% 的时间在玩这个。我做了一些挖掘,但似乎找不到正确(或可能)的方法来完成我正在寻找的事情。

一些背景故事。我编写此查询是为了直接与 nv3d 图形库集成,因此数据结构以及正确确定日期范围对我来说如此重要。

首先我们有一个“Products”的模型查询,这为我创建了一个带有 id、标题和颜色的漂亮有序列表。

Product::whereCuId(auth()->user()->cu_id)
->whereCategoryId($id)
->orderBy('sort_order', 'ASC')
->select('id as id','title AS key', 'color AS color')
->get();

这会返回以下内容。

{
"id": 1,
"key": "Title 1",
"color": "#ffbd13",
}
{
"id": 2,
"key": "Title 2",
"color": "#8f8f8f"
}
(etc)

第一步:太棒了!

接下来,在产品模型中,我将向每个产品附加日期/值。这就是问题所在。

如何将参数传递给此辅助查询,例如日期计数、范围等?!

protected $appends = array('values');
public function getValuesAttribute() {
return $values=Checkin::whereProductId($this->id)
->groupBy('date')
->orderBy('date', 'ASC')
->whereRaw('Date(created_at) > CURDATE() - INTERVAL 21 day')
->get(array(
DB::raw('1000*UNIX_TIMESTAMP(Date(created_at)) as date'),
DB::raw('COUNT(id) as total')
));
}

现在显然我可以使用上面查询中当前的类似内容......

->whereRaw('Date(created_at) > CURDATE() - INTERVAL 21 day') 

但是我怎么可能将参数从初始 Controller (调用产品模型)传递到模型内的子函数中,并说...将上面的“21”设置为我传入的变量?

提前感谢大家的帮助!!!

这是数据格式的最终​​目标,因为它目前存在(无法更改天数范围),仅作为示例包含在内。

{
"id": 1,
"key": "Title 1",
"color": "#ffbd13",
"values": [
{
"date": 1468047600000,
"total": 4
},
{
"date": 1468134000000,
"total": 1
},
{
"date": 1468220400000,
"total": 1
},
{
"date": 1468306800000,
"total": 2
}]
}
{
"id": 2,
"key": "Title 2",
"color": "#8f8f8f"
}
(etc)

最佳答案

我猜你正在寻求结束。没有测试它,但应该给你这个想法:

$yourVar = 21;
$values=Checkin::whereProductId($this->id)
->groupBy('date')
->orderBy('date', 'ASC')
->where(function ($query) use ($yourVar) {
$query->whereRaw('Date(created_at) > CURDATE() - INTERVAL '.$yourVar.' day'));
})
->get(array(
DB::raw('1000*UNIX_TIMESTAMP(Date(created_at)) as date'),
DB::raw('COUNT(id) as total')
));

关于php - 具有附加函数和传递参数的 Laravel 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38665832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com