Как вставить в сводную таблицу после отправки формы с помощью приложения? - PullRequest
0 голосов
/ 26 марта 2019

Я использую Laravel eloquent и пытаюсь вставить выбранный идентификатор пользователя из моей формы и сгенерированный идентификатор заявки в мою сводную таблицу, используя метод attach, но я не знаю, как это сделать.

функция хранения

 public function store(Request $request
 {        
     $ticket = new Ticket;
     $ticket->organisation_name = $request['organisation_name'];
     $ticket->postal_address = $request['postal_address'];
     $ticket->physical_address = $request['physical_address'];
     $ticket->description_brief = $request['description'];
     $ticket->hours_dedicated = $request['hours'];
     $ticket->commencement_date = $request['start_date'];
     $ticket->due_date = $request['due_date'];
     $ticket->client_id = $request['client_id'];
     $ticket->save();

     //trying to use attach here

     return redirect('/home');
 }

форма

 <form action="TicketsController@store" method="POST">
        {{csrf_field() }}
        <div class="form-group">
            <label>Organisation Name:</label>
            <input type="text" class="form-control" name="organisation_name" placeholder="Enter Organisation Name">
        </div>
        <div class="form-group">
            <label>Postal address:</label>
            <input type="text" class="form-control" name="postal_address" placeholder="">
        </div>
        <div class="form-group">
            <label>Physical address:</label>
            <input type="text" class="form-control" name="physical_address" placeholder="">
        </div>
        <div class="form-group">
            <label>Client:</label>
            <select class="form-control" name="client_id">
                @foreach ($forms as $form)
                <option>{{$form->client->client_id}}</option>
                @endforeach
            </select>
        </div>
        <div class="form-group">
            <label>Description:</label>
            <input type="text" class="form-control" name="description" placeholder="">
        </div>
        <div class="form-group">
            <label>Hours:</label>
            <input type="text" class="form-control" name="hours" placeholder="">
        </div>
        <div class="form-group">
            <label>Start date:</label>
            <input type="text" class="form-control" name="start_date" type="date" placeholder="">
        </div>
        <div class="form-group">
            <label>Due date:</label>
            <input type="text" class="form-control" name="due_date" type="date" placeholder="">
        </div>
        <div class="form-group">
            <label>User:</label>
            <select class="form-control" name="id">
                @foreach ($users as $user)
                <option>{{$user->id}}</option>
                @endforeach
            </select>
        </div>
        <input type="submit" name="submit" class="btn btn-primary">

    </form>

User.php

 class User extends Authenticatable
 {
 use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];
public function tickets(){
    return$this->belongsToMany(Ticket::class,'ticket_user','ticket_id','id');
}

Ticket.php

 class Ticket extends Model
 {

public function client(){
    return $this->belongsTo(Client::class,'client_id');
}
public function users(){
    return $this->belongsToMany(User::class,'ticket_user','id','ticket_id');
}

protected $primaryKey = 'ticket_id';
public $timestamps = false;

 }

1 Ответ

0 голосов
/ 26 марта 2019

Согласно документации вы можете просто передать id, который вы хотите прикрепить.После $ticket->save(); вы можете добавить следующее:

$ticket->users()->attach($request->input('id'));

attach() также будет работать, если вы передадите массив идентификаторов, модель, коллекцию идентификаторов или коллекцию моделей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...