【问题标题】:laravel unable to parse datalaravel 无法解析数据
【发布时间】:2019-03-08 02:24:08
【问题描述】:

我想从PayAbleIndex 转到PayAbleEdit 的页面编辑。

laravel 5.4 上我可以使用:

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

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

我的刀片.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');
  }
}

【问题讨论】:

  • 能否请您在路由中提供accountPayAble 模型文件您是如何声明编辑的?
  • 我已经编辑了我的帖子
  • 如果您在刀片 {{ route('payable.edit',$data-&gt;id) }} 中传递 $data-&gt;id,那么您还需要将其传递给控制器​​编辑方法
  • 我该怎么做?
  • 我已经回答过了,你能告诉我你的编辑路线吗?

标签: laravel-routing laravel-5.7


【解决方案1】:

我认为控制器返回数组名称应该购买如下

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

勾选此项,如果无法在下方发表评论。

【讨论】:

  • 仍然无法获取数据...当我使用 dd($accountBayAble-&gt;id) 时,它只会返回 null
  • 尝试改成$pa = accountPayAble::where('purchases',$accountPayAble->id)->all();
  • 仍然无法正常工作,我认为问题不在 eloquent 上,而是在 laravel 5.4 上解析数据 $accountPayAble-&gt; 我可以使用 $company = company::whereId($company-&gt;id)-&gt;firstOrFail();
  • 我已经使用dd() 检查了 5.4 和 5.7 之间的差异,在 5.4 上的参数有数据 insde,但在 5.7 上它是空的
  • 你是正确的问题是 laravel 5.7 中的声明。检查这个______________________________ $pa = accountPayAble->all()::where('purchases',$accountPayAble->id)->get();
【解决方案2】:

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

如果你像这样在刀片的编辑方法参数中传递 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';

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-12-25
    • 2019-01-24
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多