我想运行一个sql语句,并且返回值是一个模型数组,目前已经返回了一个stdClass数组。
我正在做这样的事情
DB::select('some sql statement')
返回结果类似于
array(2) {
[0]=> object(stdClass)#524 (7) .....
[1]=> object(stdClass)#525 (7) .....
我宁愿
array(2) {
[0]=> object(App\Feed)#524 (7) .....
[1]=> object(App\Feed)#525 (7) .....
查询只涉及一个表(没有连接等)。如果我使用DB::raw()
等查询构建器,代码看起来会更麻烦。我理解SQL注入的风险。
有没有合适的方法呢?
型号代码(Feed.php)
use Illuminate\Database\Eloquent\Model;
class Feed extends Model
{
.......
答案 0 :(得分:1)
在这种情况下,您应该使用模型 - https://laravel.com/docs/5.4/eloquent
答案 1 :(得分:0)
保持简单:) http://commandz.io/create-models-from-query-builder/
$result = Feeds::query()
->where(
['wait_seconds', '>', 'TIMESTAMPDIFF(SECOND, emailed_at, NOW() )'],
['GREATEST(wait_seconds / 6, '.self::MIN_RESCAN_SECONDS.')', '>', 'TIMESTAMPDIFF(SECOND, scanned_at, NOW() )']
)
->orWhereNull('scanned_at')
->get();;
$feeds = \App\Feed::hydrate($result);