laravel无法解析数据

时间:2019-03-03 13:06:44

标签: laravel-routing laravel-5.7

我想从PayAbleIndexPayAbleEdit进行页面编辑。

laravel 5.4 上,我可以使用:

<a href="{{ route('payable.edit',$data->id) }}"><button class="btn btn-primary">Edit</button></a>.

但是目前我正在使用 laravel 5.7 ,并且我复制了相同的代码,但是laravel无法从中获取任何数据。

我的blade.php

@foreach($purchase as $data)
    <tr>
      <td>{{ $data->id }}</td>
      <td>{{ $data->created_at }}</td>
      <td>@if($data->import == 'y')Yes @else No @endif</td>
      <td><a href="{{ route('payable.edit',1) }}" class="btn btn-success">Edit {{ $data->id }}</a></td>
    </tr>
  @endforeach

我的控制器

public function edit(accountPayAble $accountPayAble)
{
    $pa = accountPayAble::where('purchases',$accountPayAble->id)->get();
    return view('pages.payAbleEdit',['pa' => $pa]);
}

我的accountPayAble主键不是ID,而是purchases

我的应付帐款模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class accountPayAble extends Model
{
  protected $table = "account_pay_ables";
  protected $primaryKey = 'purchases';
  public $timestamps =false;
  public function purchase(){
    return $this->belongsTo('App\purchase','purchases');
  }
}

2 个答案:

答案 0 :(得分:0)

我认为控制器返回数组名称应按以下方式购买

public function edit(accountPayAble $accountPayAble)
{
    $pa = accountPayAble::where('purchases',$accountPayAble->id)->get();
    return view('pages.payAbleEdit',['purchase' => $pa]);
}

对此进行检查,如果下面没有可能发表评论。

答案 1 :(得分:0)

以下是编辑方法的一般工作原理

如果要在像这样的刀片中的编辑方法参数中传递ID

<a href="{{ route('payable.edit',1) }}" class="btn btn-success">Edit {{ $data->id }}</a>

在这种情况下,路由必须具有 / {id}

// If you are using resource route then it will add /{id} in your edit parameter 
Route::resource('payable', 'AccountPayAble');

// If you've defined custom route then 
Route::get('/payable/edit/{id}','AccountPayAble@edit')->name('payable.edit');

在您的控制器中

// then you need to pass as well in your Controller method
public function edit(Request $request, $id)
{
    $ap = AccountPayAble::find($id);
    // OR
    $ap = AccountPayAble::where('primary_key',$id)->first();
    return view('pages.payAbleEdit',compact('ap'));
}

// If you've primary key other than id then define key into your model
protected $primaryKey = 'your_key_name';

我希望这会有所帮助。