繁体   English   中英

Laravel 5.2属于很多视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM