查询关系日期与laravel中的雄辩

时间:2016-03-13 12:29:24

标签: php mysql laravel laravel-5 eloquent

我正在使用laravel作为API创建日历应用程序。

我希望能够搜索活动(活动模型)并过滤月份。所以我有一个搜索字词可以过滤某些月份的数组。 这个数组看起来像这样:

array (
  0 => 
  array (
    'first_date' => '2016-03-11',
    'last_date' => '2016-03-31',
  ),
  1 => 
  array (
    'first_date' => '2016-04-01',
    'last_date' => '2016-04-30',
  ),
  2 => 
  array (
    'first_date' => '2016-05-01',
    'last_date' => '2016-05-31',
  )
  // etc...
)   

活动有多个CalendarItem( s ),表示活动的日期 s

现在我不确定在该数组的日期之间获取Activity模型的最佳方法是什么。

  • 我可以原始查询CalendarItem并通过他们雄辩的关系检索活动,然后我将需要整理重复项。
  • 我可以使用whereHas('CalendarItem',function($ q){$ q-> whereBetween(etc ..)})

有没有人有好的建议?

编辑03/14/2014 相关的迁移看起来像这样:
活动迁移:

 Schema::create('activities', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title')->unique();
        $table->string('description')->nullable();
        $table->integer('activitytype_id');
        $table->integer('course_leader')->references('id')->on('users');
        $table->timestamps();
        $table->softDeletes();
    });

CalendarItem迁移:

    Schema::create('calendar_items', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('activity_id')->references('id')->on('activities');
        $table->date('date');
        $table->time('starttime');
        $table->time('endtime');
    });

0 个答案:

没有答案