2017-02-03 2 views
0

Nachdem ich mein Formular zum Erstellen von Projekten verwendet habe, kann ich eine Liste der erstellten Projekte sehen (Titel (Zeichenfolge), Code (Zeichenfolge), Domänen (Dropdown-Liste), Eigentümer) (Dropdown-Liste). Statt den Namen der Domäne oder des zuvor in der Dropdown-Liste ausgewählten Eigentümers anzuzeigen, kann ich nur die ID sehen. Ich weiß nicht, wie ich das beheben kann.So zeigen Sie die Dropdown-Liste gespeicherte Daten an laravel

Hier ist meine Migration create_projects_table:

public function up() 
{ 
    Schema::create('pros', function (Blueprint $table) { 

    $table->increments('id', true); 
    $table->string('title'); 
    $table->string('code'); 
    $table->integer('domain_id')->unsigned(); 
    $table->foreign('domain_id')->references('id')->on('domains');   
    $table->integer('owner_id')->unsigned(); 
    $table->foreign('owner_id')->references('id')->on('owners');    
    table->timestamps(); 
    }); 
} 
public function down() 
{ 
     Schema::dropIfExists('projects'); 
} 

ProjectController:

public function index(Request $request) 
{ 
// 
$projects = Project::orderBy('id','DESC')->paginate(5); 
      return view('projects.index',compact('projects')) 
      ->with('i', ($request->input('page', 1) - 1) * 5); 
    } 
public function create() 
{ 
    $domains = Domaine::all('nameDomain', 'id'); 
    $owners = Owner::all('nameOwner', 'id'); 
    return view('projects.create', compact('domains', 'owners')); 
} 
public function store(Request $request) 
{ 
     $this->validate($request, [ 
     'title' => 'required', 
     'code' => 'required', 
     'owner_id' => 'required', 
     'domain_id' => 'required' 
]); 

Project::create($request->all()); 
return redirect()->route('projects.index') 
       ->with('success','Project created successfully'); 

} 
public function show($id) 
{ 
    $domains = Domain::all('nameDomain', 'id'); 
    $owners = Owner::all('nameOwner', 'id'); 
    $project = Project::find($id); 
    return view('projects.show',compact('project', 'domains', 'owners')); 
} 

show.blade.php:

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
     <strong>Quartier:</strong> 
     {{ $pro->quartier_id }} 
    </div> 
</div> 

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
    <strong>Responsable:</strong> 
     {{ $pro->responsable_id }} 
    </div> 
</div> 

index.blade.php:

<!-- ........ --> 
<table class="table table-bordered"> 
<tr> 
    <th>No</th> 
    <th>title</th> 
    <th>code</th> 
    <th>domain_id</th> 
    <th>owner_id</th> 
    <th width="280px">Action</th> 
</tr> 
@foreach ($projects as $key => $project) 
    <tr> 
    <td>{{ ++$i }}</td> 
    <td>{{ $project->title }}</td> 
    <td>{{ $project->code }}</td> 
    <td>{{ $project->domain_id}}</td> 
    <td>{{ $project->owner_id}}</td> 


<!-- ...... --> 

Project.php:

class Pro extends Model 
{ 
// 
public $fillable = ['title','code','domain_id', 'owner_id']; 

}

das ist, was ich habe nach dem Hinzufügen von dd ($ projects); :

LengthAwarePaginator {#285 ▼ 
#total: 3 
#lastPage: 1 
#items: Collection {#327 ▼ 
    #items: array:3 [▶] 
} 
#perPage: 5 
#currentPage: 1 
#path: "http://127.0.0.1/Projet_PAC/Projet_PAC/public/pros" 
#query: [] 
#fragment: null 
#pageName: "page" 
} 

und dann nach Zugabe von {{dd (projekt- $> Domain)}} als erste Zeile in

Domain {#339 ▼ 
#table: "domains" 
+fillable: array:1 [▼ 
0 => "domain" 
] 
#connection: null 
#primaryKey: "id" 
#keyType: "int" 
#perPage: 15 
+incrementing: true 
+timestamps: true 
#attributes: array:4 [▶] 
#original: array:4 [▼ 
"id" => 2 
"nameDomain" => "domaine2" 
"created_at" => "2017-02-01 22:55:25" 
"updated_at" => "2017-02-01 22:55:25" 
] 
#relations: [] 
#hidden: [] 
#visible: [] 
#appends: [] 
#guarded: array:1 [▼ 
0 => "*" 
] 
#dates: [] 
#dateFormat: null 
#casts: [] 
#touches: [] 
#observables: [] 
#with: [] 
+exists: true 
+wasRecentlyCreated: false 
} 
+0

können Sie zeigen, was 'dd ($ project)' vor Ihrer Return-Zeile in Index-Funktion zeigt? – Onix

+0

Sorry, ich verstehe nicht, was du von mir verlangst, kannst du das bitte mehr erklären? – Naj

+0

nach dieser Zeile '$ projects = Project :: orderBy ('id', 'DESC') -> paginate (5);' fügen Sie in Ihrem ProjectController dieses 'dd ($ projects)' hinzu. Dann gehe zu deiner Indexseite auf deiner Webseite. Und Sie sollten in der Lage sein zu sehen, was das $ Projekt enthält, und fügen Sie es in Ihre Frage ein, damit wir es sehen können. – Onix

Antwort

1

Sie für jede Schleife wie richtige eloquent Beziehungen für die Modelle einstellen müssen:

namespace App\Project; 

Class Project { 
    public function domain() { 
    return $this->belongsTo('App\Domaine'); 
    } 
    public function owner() { 
    return $this->belongsTo('App\Owner'); 
    } 
} 

nun in der Ansicht, die Sie verwenden können:

@foreach ($projects as $key => $project) 
    <tr> 
    <td>{{ ++$i }}</td> 
    <td>{{ $project->title }}</td> 
    <td>{{ $project->code }}</td> 
    <td>{{ $project->domain->name }}</td> 
    <td>{{ $project->owner->name }}</td> 
    </tr> 
@endforeach 

Anmerkung: Ich gehe davon aus, dass Sie Spalte „Name“ in Ihrer Besitzer und Domänen Tabelle

Bitte haben Sie einen Blick auf diese haben: https://laravel.com/docs/master/eloquent-relationships#one-to-many

+0

Ja, ich habe Spaltennamen in den Tabellen. Ich habe versucht, was Sie vorgeschlagen, aber ich habe diesen Fehler: ErrorException in 1f60125c79899e814ca59f79fba4340134d63b14.php Zeile 60: Der Versuch, die Eigenschaft von Nicht-Objekt (View: C: \ Programme (x86) \ EasyPHP-Devserver-16.1 \ eds-www \ PC \ ressourcen \ ansichten \ projekte \ index.blade.php) – Naj

+0

Schreiben Sie dies in Ihrer Ansicht als erste Zeile für jede Schleife: {{dd ($ project-> domain)}} –

+0

Ich tat, bitte überprüfen der Beitrag wieder ist es bearbeitet – Naj

0

Sie haben keine Beziehungen zu Ihren anderen Modellen. versuchen Sie dies:

public function domaine() { 
    return $this->hasOne(Domaine::class); 
} 

public function owner() { 
    return $this->hasOne(Owner::Class); 
} 

Nach Ansicht Verwendung dieses: Sie

@foreach ($projects as $project) 
    <tr> 
    <td>{{ ++$i }}</td> 
    <td>{{ $project->title }}</td> 
    <td>{{ $project->code }}</td> 
    <td>{{ $project->domaine->id }}</td> 
    <td>{{ $project->owner->id }}</td> 
    </tr> 
@endforeach 

(entfernen Sie die dd ($ Projekte) Ich fragte

Ihr Pro.php Modell diese Funktionen haben sollte hinzufügen früher)

+0

das ist genau das, was ich versucht habe, aber es sagt: ErrorException in 1f60125c79899e814ca59f79fba4340134d63b14.php Zeile 62: Der Versuch, die Eigenschaft von Nicht-Objekt (Ansicht: C: \ Programme (x86) \ EasyPHP-Devserver-16.1 \ eds-www \ PC \ Ressourcen \ Ansichten \ Projekte \ index.blade.php) – Naj

+0

In Ihrer Indexfunktion versuchen Sie, diese 'return view ('projects.index', compact ('projects'))' zurückzugeben und diesen Teil '-> mit ('i', ($ request) zu entfernen -> input ('page', 1) - 1) * 5) 'um zu sehen, ob es funktioniert, entferne auch diese lin eform deine Ansicht nur um zu testen' {{++ $ i}} ' – Onix

+0

immer noch denselben Fehler zu bekommen : "Versuch, Eigenschaft von Nicht-Objekt zu erhalten" – Naj

Verwandte Themen