Laravel 5.2.39では人と場所の間にbelongsstoMany関係を作成しようとしていますが、情報を選択ボックス内のビューに渡すことはできません。私はちょうど得る: "エラー例外:未定義変数:人々"。また、ピボットテーブルのエントリを保存したり作成したりすることもありません。Laravel 5.2はビュー内に属しています
'people'と 'places'テーブルに対応する 'place_id'と 'person_id'カラムを使用して、ピボットテーブルperson_placeを作成しました。
アプリケーション/ 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');
}
}
アプリケーション/ 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');
}
}
アプリケーション/ HTTP /コントローラ/ 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('[email protected]');
}
/**
* 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('[email protected]', $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('[email protected]');
}
}
リソース/ビュー/場所/ edit.blade.index.php(私は選択リストを構築しようとしている場所ビューは、作業-not)
@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
リソース/ビュー/場所/作成.blade.index.php「添付」「持つ」との様々な方法を試してみましたが、取得することができませんがあります
@section('aside')
{!! Form::select('people', $people, null, ['class' => '', 'multiple']) !!}
@endsection
(場所は、保存するとき、ピボットテーブルを作成しませんが、作品の選択リストを見ます)結果。興味深いことに、私は特に「$人= 『foo』を置いた場合でも、私の編集方法では、それはまだそれが定義されていないと言う
はあなたの助けをありがとう
EDIT:更新されたコード
私は賭けていた場合、私はPHPのは、 'コンパクト()' ')(Laravelの'ビューとうまく再生されていないと言うでしょう。 'array( 'people' => $ people)'のような標準配列を渡そうとしましたか? – lesssugar
ありがとうございます。私はかなり新しく、コンパクト($、$)を使用するときと使用するときの違いを理解していません。上記のコードを手直しで更新し、動作させました。しかし、おそらくこれは私が新しいものを救うことができない理由と関連しています。 '$ place-> people() - > sync($ input);は私が得ることのできる最も近いものですが、正しく動作しません(データベース全体を入れて偽のレコードを作ります)。 –