Laravel 6: внешний ключ не сохраняется - PullRequest
0 голосов
/ 18 января 2020

Я новичок в laravel, пытаюсь сохранить объект с внешним ключом.

У меня есть таблица с именем счета , счета имеют внешний ключ client_id .

Я создал create.blade, как показано ниже

<form action="{{route('invoice.store')}}" method="post">

@csrf

@method('post')

<input type="text" name="client_id" class="form-control">
<input type="text" name="mobile" class="form-control">
<button class="btn btn-info">Submit</button>

</form>

В магазине метод, который я попробовал, как показано ниже

public function store(Request $request)
{
        Invoice::create($request->all());
}

В модели я дал все поля в заполнении

protected $fillable = ['client_id ','mobile','invoice_date'];

Проблема в том, что, когда я собираюсь сохранить данные, я получаю ошибку ниже

enter image description here

После использования dd, получая ниже Ответ

array:4 [▼
  "_token" => "ftg05U1OoQsmqrRA16D8FT0jbjqkgJBaaUuAkhUS"
  "_method" => "post"
  "client_id" => "1"
  "mobile" => "01813268086"
]

Мой вопрос: почему client_id отсутствует в поле вставки и почему он не сохраняется?

Ответы [ 4 ]

0 голосов
/ 19 января 2020

У вас есть дополнительный пробел на client_id

Это

protected $fillable = ['client_id ','mobile','invoice_date'];

Должно быть

protected $fillable = ['client_id','mobile','invoice_date'];
0 голосов
/ 18 января 2020

Можете ли вы просто попытаться получить client_id. Это приходит

public function store(Request $request)
{
        dd($request->client_id);
}
0 голосов
/ 18 января 2020

вы можете сделать это

public function store(Request $request)
{
     $data = $request->except(['_token','_method']);
        Invoice::insert($data);
}
0 голосов
/ 18 января 2020

Определенно это не сохранит, потому что в ответе есть токен и метод, и он найдет столбцы с именами _token и _method. Чтобы решить эту проблему, вы можете изменить его на.

public function store(Request $request)
{
    Invoice::create($request->except('_token', '_method'));
}

или чтобы быть более уверенным в

public function store(Request $request)
    {
        Invoice::create([
             'client_id ' => $request->client_id,
             'mobile' => $request->mobile,
             'invoice_date' => date('Y-m-d')
        ]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...