Laravel:将 QueryBuilder 转换为 Eloquent:ORM
Laravel: Convert QueryBuilder to Eloquent:ORM
如何 return,使用 eloquent,所有 deleted_at
列为空的文件。我可以像这样访问 deleted_at
的值 $media->model['deleted_at']
在控制器中 I return $文件到视图。
$files = $media->paginate(3);
在我看来,如果文件被删除,下面的代码会给我空 <iframe>
。
@foreach ($files as $media)
@if(is_null($media->model['deleted_at']))
@php($id = $media->model['id'])
@php($file_name = $media->model['document_file'][0]['file_name'])
<iframe style="width: 500px; height: 700px;" src="{{ asset("storage/$id/$file_name") }}"></iframe>
@endif
@endforeach
使用 QueryBuilder 我可以这样做,但是如何使用 eloquent.
$file = DB::table('media')
->join('files', 'media.model_id', '=', 'files.id')
->select('model_id', 'file_name')
->where('deleted_at', '=',null)
->paginate(3);
Eloquent查询
$file = Media::whereHas('files', function($query) {
$query->whereNull('deleted_at');
})->get();
Laravel 有一个 Scout 包,它有一个 withTrashed()
功能来检索 none 删除和软删除,如果你只想要垃圾,你可以使用 onlyTrashed()
功能.
$files = Media::has('files')->withTrashed()->get();
如何 return,使用 eloquent,所有 deleted_at
列为空的文件。我可以像这样访问 deleted_at
的值 $media->model['deleted_at']
在控制器中 I return $文件到视图。
$files = $media->paginate(3);
在我看来,如果文件被删除,下面的代码会给我空 <iframe>
。
@foreach ($files as $media)
@if(is_null($media->model['deleted_at']))
@php($id = $media->model['id'])
@php($file_name = $media->model['document_file'][0]['file_name'])
<iframe style="width: 500px; height: 700px;" src="{{ asset("storage/$id/$file_name") }}"></iframe>
@endif
@endforeach
使用 QueryBuilder 我可以这样做,但是如何使用 eloquent.
$file = DB::table('media')
->join('files', 'media.model_id', '=', 'files.id')
->select('model_id', 'file_name')
->where('deleted_at', '=',null)
->paginate(3);
Eloquent查询
$file = Media::whereHas('files', function($query) {
$query->whereNull('deleted_at');
})->get();
Laravel 有一个 Scout 包,它有一个 withTrashed()
功能来检索 none 删除和软删除,如果你只想要垃圾,你可以使用 onlyTrashed()
功能.
$files = Media::has('files')->withTrashed()->get();