Как я могу использовать __construct в сочетании с контроллером в Laravel

Я создал приложения Laravel в Laravel 4 и Laravel 5, но на этот раз я решил сначала написать все свои тесты, так как раньше никогда не писал тесты для тривиальных приложений.

Вот мой класс Account — для иллюстрации

class Account extends Model
{
protected $customer_id;
protected $bookmaker_id;
protected $balance;
protected $profit;

public function __construct($customer_id, $bookmaker_id, $balance, $profit) {
$this->customer_id = $customer_id;
$this->bookmaker_id = $bookmaker_id;
$this->balance = $balance;
$this->profit = $profit;
}
}

Так что все мои юнит-тесты работают нормально:

Мой маршрут правильно настроен на страницу, которую я хочу отобразить

Route::get('/accounts', 'AccountController@index');

но здесь все идет не так. На самом деле попытка запустить страницу, чтобы получить список учетных записей, хлопотно. Я знаю, что это больше связано с классом контроллера, но вот что у меня есть.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Account;

class AccountController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$accounts = Account::all();
return view('account.index', compact('accounts'));
}
}

Тогда я получаю эту ошибку —

ErrorException in Account.php line 14:
Missing argument 1 for App\Account::__construct(), called in /Applications/MAMP/htdocs/mb-app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 665 and defined

Может кто-нибудь сказать мне, как я должен настроить свой контроллер, пожалуйста? Пока я не добавил __construct () для своих модульных тестов, все шло нормально.

Благодарю.

1

Решение

Используя __construct, он ожидает аргументы каждый раз, когда вы его инициализируете. Так что вместо этого вы бы использовали

$accountModel = new Account($customer_id, $bookmaker_id, $balance, $profit);
$accounts = $accountModel->all();

Если вы хотите использовать эти переменные для создания новой модели, посмотрите на $ заполняемых.

0

Другие решения

Других решений пока нет …