Laravel检查用户的记录

时间:2018-03-03 18:06:50

标签: php laravel laravel-5

我已创建此控制器。这是我从用户那里获得所有广告(avisos)的地方。

class AdController extends Controller
  {
  public function index(Request $request)
  {

    $page = $request->get('page',1);
    $perPage = 15;
    $offset = ($page * $perPage) - $perPage;


    $avisos = Ad::select(['id','user_id','title','content','created_at','moderated_at'])
            ->WithNotModerate()
            ->orderBy('moderated_at', 'asc')
            ->paginate(15);



    if($request->has('user_id'))
    $avisos = Ad::select(['id','user_id','title','content','created_at','moderated_at'])
                ->WithNotModerate()
                ->where('user_id','like','%'.$request->user_id.'%')
                ->orderBy('moderated_at', 'asc')
                ->paginate(15);

    if ($request->ajax()) {
        return view('admin.avisos.data', ['avisos' => $avisos])->render();  
    }

    return view('admin.avisos.index', compact('avisos'));
}

以下是我在刀片视图中呈现的所有广告,包括所有用户的所有广告。

@foreach ($avisos as $aviso)
    <tr>
    <td>{{$aviso->id}}</td>
    <td>{{$aviso->user_id}}</td>
    <td>{{str_limit($aviso->title, 40)}}</div></td>
    <td>{{str_limit($aviso->content, 40)}}</div></td>
    <td>{{$aviso->created_at->diffForHumans()}}</td>
    <td>{{$aviso->moderated_at}}</td>
    </tr>
@endforeach

我想检查用户是否有多个广告&#39; created_at&#39;在过去的15天里,我可以在表格行中添加一个类

我试过这样的事情

  @foreach ($avisos as $aviso)
    <?php
    $date = \Carbon\Carbon::today()->subDays(15);
    $already = DB::table('ads')
          ->where('user_id','=','$aviso->user_id')
          ->where('created_at' ,'=', date($date))
          ->get();
    var_dump($already); 
    ?>
    <tr>
    <td>{{$aviso->id}}</td>
    <td>{{$aviso->user_id}}</td>
    <td>{{str_limit($aviso->title, 40)}}</div></td>
    <td>{{str_limit($aviso->content, 40)}}</div></td>
    <td>{{$aviso->created_at->diffForHumans()}}</td>
    <td>{{$aviso->moderated_at}}</td>
    </tr>
  @endforeach

返回

object(Illuminate\Database\Eloquent\Collection)#3073 (1) { ["items":protected]=> array(0) { } } for each ad...

1 个答案:

答案 0 :(得分:1)

您错误地使用了date功能。 date的第一个参数除了字符串形式的有效格式外,您给出的是Carbon个实例。

但是因为您已经拥有Carbon的实例,所以您不需要使用date。格式化Carbon实例以匹配您在数据库中的内容。

您还要针对字符串user_id而不是实际变量值检查$aviso->user_id

'$aviso->user_id'$aviso->user_id之间存在差异。删除单引号以获得预期值。

$date = \Carbon\Carbon::today()->subDays(15);
$already = DB::table('ads')
      ->where('user_id','=',$aviso->user_id)
      ->where('created_at' ,'=', $date->format('Y-m-d H:i:s'))
      ->get();