【问题标题】:I can't get data when i am editing in laravel 5.1我在 laravel 5.1 中编辑时无法获取数据
【发布时间】:2016-04-14 05:53:37
【问题描述】:
i have address Book table and user table i am assigning 

在我创建时,我的通讯录中有很多用户,一切都很好(好的) 但是当我在没有分配用户的情况下编辑表单中的每个数据时。 我怎样才能让用户编辑表单?这是我的地址簿控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\AddressRequest;
use App\Http\Requests;
use App\Models\Address;
use App\Models\User;
use App\Http\Controllers\Controller;`enter code here`
use Illuminate\Pagination\Paginator;
use Auth;
use DB;
use Session;

class AddressesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index(Request $request)
    {
        Session::forget('searchaddress');

       $addresses = Address::orderby('company_name');

        $company_name = $request->input('company_name');

        if(!empty($company_name)) {

              //$addresses->where('company_name','LIKE','%'.$company_name.'%');

             $addresses->where('company_name','LIKE','%'.$company_name.'%');
            Session::set('searchaddress', $company_name);
        }
        $addresses = $addresses->paginate(5);


        return view('address.index',compact('addresses'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {

        $users = User::lists('first_name','id');

        return view('address.create',compact('users'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store(AddressRequest $request)
    {

        $address = Address::create($request->all());
        $firstname = Auth::user()->first_name;
        $lastname = Auth::user()->last_name;
        $address->created_by =$firstname." ".$lastname;

        $address->users()->attach($request->input('user_list'));
        $address->save();
        return redirect('/addresses');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        $address = Address::find($id);
        return view('address.show',compact('address'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id)
    {   $users = User::lists('first_name','id');
        $address = Address::findorFail($id);

        return view('address.edit',compact('address','users'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update( AddressRequest $request ,$id)
    {

        $address = Address::findOrFail($id);
        $address->update($request->all());
        $address->users()->sync($request->input('user_list'));
        return redirect('/addresses');

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        $address = Address::find($id);
        $address->delete();
        return redirect('/addresses');
    }


}
 and that is my AddressBook Model 
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Address extends Model
{
    protected $fillable = [
    'created_by',
    'company_name',
     'phone', 
     'email', 'address','comment'
    ];
    public function users()
    {
        return $this->belongsToMany('App\Models\User')->withTimestamps();
    }
    public function getUserListAttribute()
    {
        return $this->users->lists('id');
    }
}

 [![enter image description here][1]][1]


  [1]: http://i.stack.imgur.com/D4jXQ.png

【问题讨论】:

  • 你能把address.edit视图的代码也贴出来吗?
  • 我听不懂你在说什么?你能简单地告诉我吗?

标签: laravel model eloquent laravel-5.1 laravel-blade


【解决方案1】:

您有 belongsToMany 关系,因此在您的编辑操作中,您还应该获得像这样的当前地址用户

public function edit($id)
    {   $users = User::lists('first_name','id');
        $address = Address::findorFail($id);
        $address_users = $address->users->lists('id')->toArray();

        return view('address.edit',compact('address','users', 'address_users'));
    }

然后在您的视图中选择您应该相交 $users 和 $address_users 的数组以获得选定的选项。

{!! Form::select('user_list[], $users, isset($address_users) ? $address_users : null, ['id' => 'users_list', 'class' => 'form-control', 'multiple']) !!}

避免

isset($address_users) ? $address_users : null

你可以在你的 create 方法中定义空的 address_users 数组并像这样进行

$address_users

【讨论】:

  • prntscr.com/9p6703 这是我的观点。视图中的代码怎么写???
  • 我编辑了我的答案。您可以根据需要制作不同的方式,但我向您展示了您的编辑方法的确切方式
  • 哦,对不起,您只需要传递 $adress_users 作为第三个参数 isset($address_users) 吗? $address_users : null
  • 我想你错过了 Form::select 中的 coteion (') 但我找不到这个 cote
  • 请再次编辑你的答案。因为我听不懂你在说什么......对不起:(
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 2017-11-21
  • 2020-07-13
  • 1970-01-01
  • 2016-03-07
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多