我试图用用户在特定时间范围内登录系统后生成的行填充用户表。但是,鉴于用户可以注销并再次登录的事实,我不想为同一用户用另一行填充表格。我还希望能够生成另一行,例如,假设该用户明天再次登录(最有可能的是,表中还会有其他用户在他之后登录)。到目前为止,这是我设法实现的目标:
$datetime = new DateTime();
$timezone = new DateTimeZone('Europe/Sofia');
$datetime->setTimezone($timezone);
$Shifts = DB::table('shifts')->latest()->first();
if ($datetime->format('H:i') >= '05:50' && $datetime->format('H:i') <= '17:10') {
DB::table('attendanceTable')->insert(['user_id' => $request->loggedUserId, 'shift_id' => $Shifts->id, 'created_at' => $datetime, 'updated_at' => $datetime]);
}
这是表格结构:
Schema::create('attendanceTable', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('shift_id');
$table->timestamps();
我尝试使用insertOrIgnore
方法,但出现此错误:
Call to undefined method Illuminate\Database\Query\Builder::insertOrIgnore()
答案 0 :(得分:0)
在#include <iostream>
#include <string>
#include <set>
using namespace std;
struct Productions {
char LHS;
string RHS;
bool operator<(const Productions& t) const {
return (this->LHS < t.LHS);
}
};
int main() {
int NoP;
cout<<"Enter No. of Productions: ";
cin>>NoP;
multiset<Productions> old_prod;
Productions prod;
for(int i=0; i<NoP; i++) {
cout<<"Enter Production No. "<<i+1<<":"<<endl;
cout<<"LHS: ";
cin>>prod.LHS;
cout<<"RHS: ";
cin>>prod.RHS;
old_prod.insert(prod);
}
cout<<old_prod.size()<<endl;
for(auto it=old_prod.begin(); it!=old_prod.end(); it++) {
cout<<it->LHS<<"->"<<it->RHS<<endl;
}
}
上添加一个“天”字段,并使attendanceTable
和user_id
的组合唯一
day
现在您有一个独特的约束,不允许在同一天为同一用户插入出勤
了解如何使用雄辩的ORM here
进行插入现在要插入记录,您可以具有这样的条件
$table->increments('id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('shift_id');
$table->date('day');
$table->unique(['user_id', 'day']);
$table->timestamps();