Laravel检查用户的记录

问题描述 投票:1回答:1

我已经创建了这个控制器。这是我从用户那里获得所有广告(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

我想检查用户在过去15天内是否有多个广告'created_at',因此我可以在表格行中添加一个类

我试过这样的事

  @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...
php laravel laravel-5
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.