2017-08-14 1 views
0

Ich habe ein Problem in diesem Laravel-Einfügecode. Wenn eine neue Firma erstellt wird, bekomme ich die Ausgabe als Firma erstellt, aber mit Firmenname als 0. Ich weiß nicht, warum das passiert. Mein Code istLaravel gibt Null für den Primärschlüsselwert zurück

Controller:

public function store(Request $request) 
    { 

     $Company = new Company([ 
      'company_name' => $request->input('company_name'), 
      'head'=>$request->input('head'), 
      'Email'=>$request->input('email'), 
      'address'=>$request->input('address'), 
      'phno'=>$request->input('phno'), 
      'contact_person'=>$request->input('contact_person') 

     ]); 
     if ($Company->save()) { 

      $response = [ 
       'msg' => 'Company Created', 
       'Company' => $Company 
      ]; 
      return response()->json($response, 201); 
     } 
     $response = [ 
      'msg' => 'An Error Occurred', 
     ]; 
     return response()->json($response, 502); 
    } 

My Model-Code ist:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Company extends Model 
{ 
    // 
    protected $table = 'companies'; 
    public $timestamps = false; 
    protected $primaryKey = 'company_name'; 
    protected $fillable = ['company_name','head','contact_person','phno','email','address']; 

} 

Eingang:

{ 
    "company_name":"cachii1", 
    "head":"sankar", 
    "email":"[email protected]", 
    "address":"chennai", 
    "phno":"123", 
    "contact_person":"sankar" 
} 

Ausgang:

{ 
    "msg": "Company Created", 
    "Company": { 
     "company_name": 0, 
     "head": "sankar", 
     "address": "chennai", 
     "phno": "123", 
     "contact_person": "sankar" 
    } 
} 

Das Datenbank-Schema ist Das Datenbank-Schema Das Datenbank-Schema ist

public function up() 
    { 
     Schema::create('companies', function (Blueprint $table) { 
      // $table->increments('company_id'); 
      $table->string('company_name'); 
      $table->primary('company_name'); 
      $table->string('head'); 
      $table->string('contact_person'); 
      $table->bigInteger('phno'); 
      $table->string('email'); 
      $table->text('address'); 

     }); 
+0

haben Sie versuchen, dd ($ request-> alle())? –

+0

Zeigen Sie uns Ihre Datenbankstruktur/Migration. Ich würde wetten 'company_name' ist ein Integer-Feld, keine Zeichenfolge. – ceejayoz

+0

@ceejayoz Ich gab company_name als String in der Datenbankstruktur – Muthu

Antwort

2

standardmäßig ist, Laravel Ihr Modell Primärschlüssel erwartet auto Inkrementieren zu sein. Nach dem, was Sie gepostet haben, sieht das bei Ihrem Beispiel nicht so aus.

Fügen Sie diese auf Ihre Modelldefinition:

public $incrementing = false;