Pivot table 检查用户是否有空
Pivot table to check user's availability
我正在制作一个招聘网站。客户需要能够搜索(复选框输入)承包商在一周中的某些日子的可用性。
我正在考虑制作一个支点 table 来存储可用性。 ID 列表示星期几,Availability 列显示 true 或 false,user_id 表示承包商的 ID。
我只是不确定这样做是否正确。 user_id 列是否必须存储多个用户 ID?可以吗?
用户迁移:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password', 255);
$table->string('address_address')->nullable();
$table->double('address_latitude')->nullable();
$table->double('address_longitude')->nullable();
$table->rememberToken();
$table->timestamps();
});
user_availability table:
Schema::create('user_availability', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('Days');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
选择你的毒药:
按位搜索整数
// Constant values
$MONDAY = 0x01
$TUESDAY = 0x02
$WEDNESDAY = 0x04
$THURSDAY = 0x08
$FRIDAY = 0x10
$SATURDAY = 0x20
$SUNDAY = 0x40
// setting multiple days
$days = $MONDAY | $TUESDAY | $FRIDAY;
// check if a specific day is part of the days
if (($days & $Monday) == $Monday) {
echo 'available on a Monday';
}
所有天数都必须可用:
SELECT * FROM user WHERE availability & :days;
有些日子必须有空
SELECT * FROM user WHERE (availability | :days) > 0;
不可用
SELECT * FROM user WHERE availability = 0;
每天一个记录
每个用户只有一条记录
我正在制作一个招聘网站。客户需要能够搜索(复选框输入)承包商在一周中的某些日子的可用性。
我正在考虑制作一个支点 table 来存储可用性。 ID 列表示星期几,Availability 列显示 true 或 false,user_id 表示承包商的 ID。
我只是不确定这样做是否正确。 user_id 列是否必须存储多个用户 ID?可以吗?
用户迁移:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password', 255);
$table->string('address_address')->nullable();
$table->double('address_latitude')->nullable();
$table->double('address_longitude')->nullable();
$table->rememberToken();
$table->timestamps();
});
user_availability table:
Schema::create('user_availability', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('Days');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
选择你的毒药:
按位搜索整数
// Constant values
$MONDAY = 0x01
$TUESDAY = 0x02
$WEDNESDAY = 0x04
$THURSDAY = 0x08
$FRIDAY = 0x10
$SATURDAY = 0x20
$SUNDAY = 0x40
// setting multiple days
$days = $MONDAY | $TUESDAY | $FRIDAY;
// check if a specific day is part of the days
if (($days & $Monday) == $Monday) {
echo 'available on a Monday';
}
所有天数都必须可用:
SELECT * FROM user WHERE availability & :days;
有些日子必须有空
SELECT * FROM user WHERE (availability | :days) > 0;
不可用
SELECT * FROM user WHERE availability = 0;
每天一个记录
每个用户只有一条记录