我有两个表,schedules
和shifts
,具有一对多的关系。从关系密切的表中获取N行与关系密切的关系表上的条件
甲schedule
具有day
,month
,year
字段,以及一个is_published
布尔值。 A shift
有一个user_id
与users
有一对一的关系。
现在,我想要获得user
的下一个5即将到来的shifts
。我必须从schedule
开始,因为该表中有日期。但是,更重要的是,我应该只检索属于已发布的schedule
的shifts
。
所以最大的问题是:
条目数应该是5个班次。然而,从时间表开始,我不知道我需要检索多少个时间表,直到有5个班次属于用户。
除了试验和错误(即检索x个下一个时间表和测试以查看是否存在足够的班次,如果不存在,则检索下n个时间表直到满足配额),是否有其他选择?
附表
Schema::create('schedules', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id', false, true);
$table->integer('client_id', false, true);
$table->datetime('for');
$table->enum('type', array('template', 'revision', 'common'));
$table->string('name', 50)->default('Untitled Template');
$table->boolean('is_published');
$table->timestamp('published_at');
$table->softDeletes();
$table->timestamps();
});
这里的架构,这些user_id
是创作者的ID,而不是谁的时间表属于。这用于跟踪未来如何创建时间表。
移位
Schema::create('shifts', function(Blueprint $table)
{
$table->increments('id');
$table->integer('schedule_id', false, true);
$table->integer('user_id', false, true);
$table->foreign('schedule_id')->references('id')->on('schedules')->onDelete('cascade');
$table->softDeletes();
$table->timestamps();
});
您是否在您的Eloquent模型中设置了关系? – lukasgeiter 2014-10-28 23:06:25
是的,关系在Eloquent表中设置。我的问题不是如何链接关系,而是如何获得一定数量的“班次”,但从“schedule”开始 – Kousha 2014-10-28 23:14:46
我明白了,只是确保...但我仍然有一个问题。你写道:“移位”与“用户”有一对一的关系。另一方面,你说你想要即将到来的5班属于用户。你最终希望在结果中安排时间表吗? – lukasgeiter 2014-10-28 23:18:20