Я создавал систему Login / Registration для приложения Personal Finance в Laravel и столкнулся с проблемой коллизии данных в базе данных.Например, если зарегистрированный пользователь с именем UserA создает расходы с именем как автомобиль, то зарегистрированный пользователь с именем как пользователь B не может создавать расходы с именем как автомобиль, поскольку столбец имени проверяется с уникальным ключевым словом, и автомобиль уже существует в базе данных, но былсозданный другим пользователем, который не то, что я ожидаю.Можете ли вы взглянуть на мой код и, если возможно, показать, где я допустил ошибку.Код контроллера:
public function store(Request $request)
{
$user_id=auth()->user()->id;
$user=User::find($user_id);
$this->validate($request, [
'Name'=>'required|unique:personal_accountings,Name,'.$user_id,
'SumOfMoney'=>'numeric'],
['Name.required'=>'Name is empty' ,
'Name.unique'=>'Name already exists']
);
$personal= new PersonalAccounting();
$personal->Name=$request->input('Name');
$personal->SumOfMoney=$request->input('SumOfMoney');
$personal->user_id= auth()->user()->id;
$personal->save();
Код модели PersonalAcounting:
class PersonalAccounting extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
}
Код модели пользователя:
public function personalAccounting(){
return $this->hasMany('App\PersonalAccounting');
}
Schema::create('personal_accountings', function (Blueprint $table) {
$table->increments('id');
$table->string('TypeOfAccounting');
$table->string('Name');
$table->integer('SumOfMoney')->unsigned();
$table->mediumText("Comments")->nullable();
$table->timestamps();
});
следующая миграция
Schema::table('personal_accountings', function($table){
$table->integer('user_id');
});