Laravel 运行原始SQL但返回模型实例数组
我想运行一个sql语句,返回值是一个模型数组,目前返回的是一个stdClass数组 我正在做这样的事情Laravel 运行原始SQL但返回模型实例数组,laravel,eloquent,Laravel,Eloquent,我想运行一个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) .....
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
{
.......
在这种情况下,您应该使用模型-保持简单:
我想运行的实际查询是从feed中选择*,其中wait_seconds>TIMESTAMPDIFFSECOND,email_,NOW和GREATESTwait_seconds/6'。self::MIN_RESCAN_seconds'>TIMESTAMPDIFFSECOND,scanned_at,现在或扫描的_at为NULL时,使用多个where和DB::rawcoan Feed::query$sql->get看起来要混乱得多;是我要找的吗?这也是我改变答案的原因但是我使用了sql的查询生成器。。。。
$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);