class Project{
public function project_users(){
return $this->hasMany(ProjectUser::class);
}
}
class ProjectUser{
public function user(){
return $this->belongsTo(User::class);
}
}
class Project{
public function users(){
return $this->belongsToMany(User::class, 'project_to_user', ....ключи);
}
return $this->belongsToMany(User::class, "НАЗВАНИЕ ТАБЛИЦЫ приглашенных в проект пользователей");
return $this->belongsToMany(User::class, "НАЗВАНИЕ ТАБЛИЦЫ приглашенных в проект пользователей")->using(ProjectUser::class);
Я делаю запрос, в котором есть проверка на баланс, гуд. Но уменьшение баланса идет после покупок (занесение данных о покупке в БД). Если запрос не пройдет, это вызовит rollback или лучше сначала делать запрос на уменьшение баланса и только если он прошел успешно - остальные два?
В плане, он же блочит возможность изменений, пока не завершится прошлая транзакция.
A shared lock prevents the selected rows from being modified until your transaction is committed:
Alternatively, you may use the lockForUpdate method. A "for update" lock prevents the selected records from being modified or from being selected with another shared lock:
Ну, это, мягко говоря, огромное преувеличение :)
\DB::transaction(function() use($balance_id) {
$balance = \App\Models\Balance::lockForUpdate()->find($balance_id);
if($balance->balance > 10){
//do stuff
}
)};