Podczas tworzenia ofert mam pole formularza o nazwie klient , gdzie muszę połączyć je z inną bazą danych. Wszystko inne wydaje się w porządku, z wyjątkiem tego, że nie mogę zapisać go w bazie danych, ponieważ zwraca błąd wartość null , nawet gdy wartość opcji jest obecna i wybrana. Używając dd i var_dump widzę, że może uzyskać informacje z innej bazy danych, więc nie rozumiem, co jest nie tak.

Błąd podczas dodawania oferty - 1000001 SQLSTATE [23000]: [Microsoft] [sterownik ODBC 13 dla SQL Server] [SQL Server] Nie można wstawić wartości NULL do kolumny „client_id”, tabela „CN-SalesSystem .dbo.quotation”; kolumna nie zezwala na wartości null. INSERT nie powiodło się.

Czy ktoś może mi pomóc rozwiązać ten problem? Naprawdę nie rozumiem, co jest nie tak. Wierzyłem, że wykonałem również modele poprawnie.

Pole formularza:

<select class="selectpicker form-control" id="client_id" name="client_id" required>
@foreach($clients as $client)
<option value="{{ $client->client_id }}" {{ old('client_id') == $client->client_id ? 'selected="selected"' : '' }}>{{ htmlspecialchars_decode($client->companyName, ENT_QUOTES) }} </option> ['class' => 'form-control', 'autocomplete' => 'off'])
@endforeach
</select>

Kontroler:

public function create()
    {
        $clients = Client::all(); 
        $employees = Employee::all(); 
        $quotations = Quotation::orderBy('quot_id', 'desc')->first();
        $lastid = Quotation::max('quot_id');
         if ($lastid >= 1000001){
             $lastid += 1;
         }
         else {$lastid = 1000001;}

return view('quotation.quotation_create', compact('lastid', 'clients', 'employees')); 

    }

Każda pomoc będzie mile widziana. Dzięki.

Edycja: dodano metodę sklepu.

public function store(AddQuotFormRequest $request)
    {
        try{
            //SAVE QUOTATION
            $quotation = new Quotation;
            $quotation = $this->getQuotationInfo($quotation, $request);
            $quotation->save();

            //SUCCESSFUL
            Session::flash( 'success', '' );
            Session::flash( 'message', 'Quote No. ' .$quotation->quot_id. ' -- Rev no. ' .$quotation->quot_rev.' has been added successfully.' );
            return redirect()->route('quotation.index');

        } catch ( \Illuminate\ Database\ QueryException $ex ) {

            //SUCCESSFUL
            Session::flash( 'message', 'Error adding quotation - ' .$quotation->quot_id. ' ' . $ex->getMessage() );
            Session::flash( 'error', '' );
            return redirect()->route('quotation.index');
        }  

    }

private function getQuotationInfo($quotation, $request)
    {

        $quotation->quot_id= $request->quot_id;
        $quotation->quot_rev = $request->quot_rev;
        $quotation->quot_validity = $request->quot_validity;
        $quotation->date = $request->date;
        $quotation->client_id = $request->client_id;
        $quotation->emp_id = $request->emp_id;
        $quotation->total_price = $request->total_price; 
        $quotation->note = $request->note; 

        return $quotation; 
    } 
0
user12466978 16 grudzień 2019, 13:12
1
Czy możesz dodać kod metody sklepu?
 – 
Maraboc
16 grudzień 2019, 13:28
Jak przekazałeś wartości ze strony kasetowej do kontrolerów.
 – 
Prathamesh Doke
16 grudzień 2019, 14:22
OK, dodałem kod metody sklepu w powyższym. Pls daj mi znać, jeśli zauważysz coś złego. Dziękuję.
 – 
user12466978
17 grudzień 2019, 04:10

1 odpowiedź

Okej, znalazłem swój błąd. Okazuje się, że muszę zmienić <option value="{{ $client->client_id }}" na <option value="{{ $client->clientID }}", ponieważ baza danych tabeli klienta nosi taką nazwę dla tego atrybutu.

0
user12466978 17 grudzień 2019, 05:24