Laravel не может разобрать данные - PullRequest
0 голосов
/ 03 марта 2019

Я хочу перейти на страницу редактирования от PayAbleIndex до PayAbleEdit.

Вкл. 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]);
}

Мой аккаунтPayAble Первичный ключ не 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 голосов
/ 05 марта 2019

Вот как обычно работает метод редактирования

Если вы передаете 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';

Надеюсь, это поможет.

0 голосов
/ 03 марта 2019

Я думаю, что имя возвращаемого массива контроллера должно быть куплено, как показано ниже

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

Проверьте это и, если это невозможно, прокомментируйте ниже.

...