Создание Laravel не работает - PullRequest
0 голосов
/ 03 мая 2018

Привет, это мой взгляд:

<form role="form" class="form" action="{{ url('/users/settings/notifications/notifications-settings') }}" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}   
<input type="checkbox"  class="flat-orange" name="notification_type1" value="1" @if(in_array(1,$user_notifications ) == 1)checked @endif>
<input type="checkbox"  class="flat-orange" name="notification_type2" value="2" @if(in_array(2, $user_notifications ) == 2)checked @endif>
<input type="checkbox"   class="flat-orange" name="notification_type3" value="3" @if(in_array(3, $user_notifications ) == 3)checked @endif>
<input type="checkbox"  class="flat-orange" name="notification_type4" value="4" @if(in_array(4,$user_notifications ) == 4)checked @endif>
  <button type="submit" class="btn save-lang">@lang('buttons.save_changes')</button>
  </form>

Вот мои маршруты:

 Route::get('/settings/notifications/notifications-settings', 'UserSettingController@getNotificationsSettings');

 Route::post('/settings/notifications/notifications-settings', 'UserSettingController@setNotificationsSettings');

Вот мой контроллер: Класс UserSettingController расширяет контроллер

{
    public function getNotificationsSettings(){

        $user_notifications = UserNotificationType::select('notification_type')->where('user_id', Auth::user()->id)->get()->toArray();

        $user_notifications = array_map(function($user_notifications){
          return  $user_notifications['notification_type'];
        }, $user_notifications);


          return view('website.settings.notifications.notifications-settings')->with(['user_notifications' => $user_notifications]);

  } 

     public function setNotificationsSettings( Request $request){

                for ($i = 1; $i <= 4; $i++) {

                  $update_user_notifications = UserNotificationType::create([

                    'user_id' => Auth::user()->id,
                    'notification_type'      => $request['notification_type'.$i] ?? false

                  ]);
                  dd( $update_user_notifications);

                }

return redirect()->back()->with(['status' => 'Notification Settings updated successfully.']);



      }

}

Модель:

public $timestamps = false;
    protected $fillable = [
        'user_id',
        'notification_type',
    ];

Мне нужно иметь возможность после создания один раз во второй раз, чтобы иметь возможность обновлять, но не создавать 4 других Мне нужно это сделать для той же функции введите описание изображения здесь

Может кто-нибудь, пожалуйста, помогите мне, я новичок в кодировании, есть ли способ достичь того, что я хочу ..

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы должны использовать красноречивые отношения.

На модели пользователя:

`` ` public $ timestamps = false;

protected $fillable = [
    'user_id',
    'notification_type',
];

public function notificationTypes () {
    return $this->hasMany(UserNotificationType::class);
}

`` `

Тогда в вас setNotificationsSettings вы можете сделать это:

`` `

for ($i = 1; $i <= 4; $i++) {
    $notificationTypes[] = $request['notification_type' . $i];
}

$user = Auth::user();
$user->notificationTypes()->sync(notificationTypes);

`` `

См. https://laravel.com/docs/5.6/eloquent-relationships#many-to-many

0 голосов
/ 03 мая 2018

В структуре таблицы базы данных допускается пустое значение в notification_type столбце

ALTER TABLE user_notification_types CHANGE notification_type notification_type INT(11) NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...