![](/img/trans.png)
[英]laravel 5.2 one pivot with many relations (belongstomany/polymorphic)?
[英]Laravel 5.2 belongstoMany in views
我試圖在人與地方之間建立Laravel 5.2.39中的belongsMany關系,但是無法將信息傳遞到選擇框中的視圖中。 我剛得到:“錯誤異常:未定義的變量:人”。 它還不會保存和創建數據透視表條目。
我創建了具有“ place_id”和“ person_id”列的數據透視表person_place,它們對應於“ people”和“ places”表。
App / Person.php (人員模型)
<?php
namespace ss;
use ss\Place;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
/**
* Fillable fields
*
* @var array
*/
protected $fillable = [
'name',
'type',
'status',
'notes',
'email',
'phone',
'alt',
'web',
'first',
'last',
'title',
];
public function places()
{
return $this->belongsToMany('Place');
}
}
App / Place.php (位置模型)
<?php
namespace ss;
use ss\Person;
use Illuminate\Database\Eloquent\Model;
class Place extends Model
{
/**
* Fillable fields
*
* @var array
*/
protected $fillable = [
'name',
'type',
'status',
'notes',
'email',
'phone',
'alt',
'web',
'address1',
'address2',
'city',
'state',
'zip',
'country',
];
public function people()
{
return $this->belongsToMany('Person');
}
}
App / Http / Controllers / PlaceController.php (位置控制器)
<?php namespace ss\Http\Controllers;
use ss\Place;
use ss\Person;
use ss\Http\Requests;
use Illuminate\Http\Request;
use View;
use Session;
class PlaceController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$places = Place::all();
$people = Person::pluck('name','id')->all();
return View::make('places.index', compact('places','people'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$people = Person::lists('last', 'id');
return view('places.create', compact('people'));
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required'
]);
$input = $request->all();
Place::create($input);
Session::flash('flash_message', 'Place successfully added!');
return redirect()->action('PlaceController@index');
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$place = Place::findOrFail($id);
return view('places.show')->withPlace($place);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$place = Place::findOrFail($id);
$people = Person::pluck('name','id')->all();
return view('places.edit', compact('place','people'));
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id, Request $request)
{
$this->validate($request, [
'name' => 'required'
]);
$input = $request->except('people');
$place = Place::findOrFail($id);
$peopleIDs = $this->place->people($peopleIds);
$place->fill($input)->save();
Session::flash('flash_message', 'Place successfully edited!');
return redirect()->action('PlaceController@index', $place);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
$place = Place::findOrFail($id);
$place->delete();
Session::flash('flash_message', 'Place successfully deleted!');
return redirect()->action('PlaceController@index');
}
}
resources / views / places / edit.blade.index.php (“位置視圖”,我試圖在其中構建選擇列表-不起作用)
@section('aside')
{!! Form::select('people', $people, null, ['class' => '', 'multiple']) !!}
<ul class="section table-of-contents">
<li><a href="#introduction">New Time</a></li>
<li><a href="#structure">New Money</a></li>
<li> </li>
<li><a href="#initialization">New Sub-Task</a></li>
</ul>
@endsection
resources / views / places / create.blade.index.php (具有選擇列表的Places View起作用,但在保存時不會創建數據透視表)
@section('aside')
{!! Form::select('people', $people, null, ['class' => '', 'multiple']) !!}
@endsection
嘗試了“ with”和“ attach”的各種方法,但無法獲得結果。 有趣的是,即使我專門在編輯方法中放置了“ $ person =” foo“ ;,它仍然表示未定義。
謝謝您的幫助。
編輯:更新代碼
在PlacesController中,您的edit($id)
方法不會將人員數組傳遞給視圖。
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$place = Place::findOrFail($id);
$people = People::pluck('name','id')->all();
return view('places.edit', compact('place', 'people');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.