【发布时间】:2016-07-11 12:21:31
【问题描述】:
我有下一个特质:
<?php
namespace App\Traits;
trait LastElement {
public function scopeLast($query)
{
return $query->orderBy('id', 'desc')
->first();
}
}
如您所见,这是 Laravel 的简单作用域。它的工作方式类似于 first(),但返回最后一个元素。
我有下一个模型:
<?php
namespace App;
use App\Traits\LastElement;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Daemon extends Model
{
use LastElement;
use SoftDeletes;
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
protected static function check()
{
$last = self::last();
if (!empty($last)) {
sleep(1);
return empty(self::where('id', $last->id)
->where('updated_at', $last->updated_at)
->first());
}
return true;
}
public static function start()
{
if (self::check()) {
$me = new self;
$me->save();
$i = 0;
while (true) {
$i++;
usleep(1 / 3 * 1000);
if (($i % 3) == 0) {
$i = 0;
$me->save();
}
}
}
}
}
不管这个模型做什么 - 但在check() 方法中,我的$last var 是Illuminate\Database\Eloquent\Builder 的实例。在我的另一个模型中,这个特性运行良好 - 我错了什么?
【问题讨论】:
标签: php laravel orm eloquent laravel-5.2