2017-02-03 7 views
0

После использования моей формы для создания проектов я могу увидеть список созданных проектов (заголовок (строка), код (строка), домены (раскрывающийся список), владельцы (выпадающий список) вместо того, чтобы показывать имя домена или владельца, выбранного ранее в раскрывающемся списке, я могу видеть только идентификатор. Я не знаю, как это исправить.Как отобразить выпадающий список сохраненных данных laravel

вот моя миграция 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']; 

}

это то, что я получил после добавления 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" 
} 

, а затем после добавления {{дд ($ project-> домена)}} в качестве первой линии в течение каждого цикла

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

Вы можете показать, что 'dd ($ project)' показывает перед вашей обратной линией в функции индекса? – Onix

+0

Извините, я не понимаю, что вы просили меня сделать, не могли бы вы объяснить это больше? – Naj

+0

после этой строки '$ projects = Project :: orderBy ('id', 'DESC') -> paginate (5);' в вашем ProjectController добавьте этот 'dd ($ projects)'. Затем перейдите на свою страницу индекса на своем веб-сайте. И вы должны уметь видеть, что содержит проект $, и вставить его в свой вопрос, чтобы мы могли его увидеть. – Onix

ответ

1

Вам необходимо установить правильный красноречивые соотношения для моделей, таких как:

namespace App\Project; 

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

Теперь в окне, вы можете использовать:

@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 

Примечание: Я предполагаю, что у вас есть столбец «имя» в ваших владельцев и доменов таблицы

Пожалуйста, посмотрите на это: https://laravel.com/docs/master/eloquent-relationships#one-to-many

+0

Да, у меня есть имя столбца в таблицах. Я попробовал то, что вы предложили, но я получил эту ошибку: ОшибкаException в 1f60125c79899e814ca59f79fba4340134d63b14.php line 60: Попытка получить свойство не-объекта (View: C: \ Program Files (x86) \ EasyPHP-Devserver-16.1 \ eds-www \ PC \ resources \ views \ projects \ index.blade.php) – Naj

+0

Напишите это в своем представлении как первая строка для каждого цикла: {{dd ($ project-> domain)}} –

+0

Я сделал, пожалуйста, проверьте пост снова редактируется – Naj

0

Вы не имеете отношения к вашим другим моделям. попробовать это:

Ваша модель Pro.php должны иметь это функции:

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

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

в использовании зрения это:

@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 

(удалить дд (проекты $) я просил вас добавить ранее)

+0

, это именно то, что я пробовал, но это говорит: ОшибкаException в 1f60125c79899e814ca59f79fba4340134d63b14.php строка 62: Попытка получить свойство не-объекта (Просмотр: C: \ Program Files (x86) \ EasyPHP-Devserver-16.1 \ eds-www \ PC \ resources \ views \ projects \ index.blade.php) – Naj

+0

в вашей индексной функции попытайтесь вернуть это 'return view ('projects.index', compact ('projects'))' и удалить эту часть '-> с помощью ('i', ($ request -> input ('page', 1) - 1) * 5) ', чтобы увидеть, работает ли он, также удалите этот lin eform свой вид, чтобы проверить' {{++ $ i}} ' – Onix

+0

, все еще получая такую ​​же ошибку : «Попытка получить свойство не-объекта» – Naj

 Смежные вопросы

  • Нет связанных вопросов^_^