【发布时间】:2013-12-28 05:08:44
【问题描述】:
我正在尝试使用 Eloquent 实现以下目标:
我想查询我的数据库,计算 status = 'waiting' 和 'inprogress' 的行数,但我遇到了以下问题。如果我运行 get() 然后尝试计数,我会被告知我不能在非对象上。如果我尝试在之后运行 get(),我会收到此错误:Undefined property: Laravel\Database\Query::$source。
这是我的两次尝试:
//get() before
$devs = Dev::todo($user_id)->get(array('id', 'type', 'title', 'source', 'priority', 'status', 'for_user', 'priority', 'desc', 'created_at'));
$devs->num_waiting = $devs->where('status', '=', 'waiting')->count();
$devs->num_inprogress = $devs->where('status', '=', 'inprogress')->count();
//get() after
$devs = Dev::todo($user_id);
$devs->num_waiting = $devs->where('status', '=', 'waiting')->count();
$devs->num_inprogress = $devs->where('status', '=', 'inprogress')->count();
$devs->get(array('id', 'type', 'title', 'source', 'priority', 'status', 'for_user', 'priority', 'desc', 'created_at'));
我的待办事项功能:
public static function todo($user_id) {
$todo = Dev::where('for_user', '=', $user_id)
->where(function($query) {
$query->where('status', '=', 'active')
->or_where('status', '=', 'inprogress')
->or_where('status', '=', 'waiting');
})
->order_by('priority', 'asc')
->order_by('created_at', 'desc');
return $todo;
}
在计算需要计算的数据后如何运行 get(),为什么会发生这种情况,有没有更好的方法来做到这一点?
【问题讨论】:
-
Laravel 的 IT 历险记,第 18 集:“Laravel 的雄辩的 ORM 混乱”。 (对不起,我无法抗拒。继续,希望你能找到解决办法!)
-
是的,不知道怎么称呼它......我来自前端,在 jQuery 中链接是有意义的......对我来说使用对象是有意义的,然后使用该未修改的对象,然后使用 get()... 因为它最初有效。有没有办法
$devs = Dev::todo($user_id); $devs->get();?
标签: php mysql laravel eloquent laravel-3