Я следую этому ответу по его шаблону:
Как создать первое веб-приложение REST API в Laravel
В конце мое приложение работает с этимиметоды:
LanController
/**
*
* Store the data in database
*
* @param Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|void
*/
public function store(Request $request)
{
$status = $this->lan_gateway->create($request->all());
/**
* Status is true if insert in database is OK
* or an array of errors
*/
if ($status===true) {
return redirect(route('lan'))
->with('success',trans('common.operation_completed_successfully'));
// validation ok
} else {
return redirect(route('lan-create'))
->withInput()
->withErrors($status);
// validation fails
}
}
LanGateway
/**
* Validate input and create the record into database
*
* @param array $data the values to insert
* @return array $validator errors on fails
* @return bool $status true on success
*/
public function create(array $data)
{
$validator = Validator::make($data, [
'ip_address' => 'required|string'
]);
if ($validator->fails()) {
return $validator->errors()->all();
} else {
$status = $this->lan_interface->createRecord($data);
return $status;
}
}
И этот интерфейс реализован в репозитории create
method
<?php
/**
* Repository for LAN object.
* PRG paradigma, instead of "User"-like class Model
*
* @see https://stackoverflow.com/questions/23115291/how-to-make-a-rest-api-first-web-application-in-laravel
*/
namespace App\Repositories;
use App\Interfaces\LanInterface;
use Illuminate\Database\Eloquent\Model;
class LanRepository extends Model implements LanInterface
{
/**
* The name of table on database
* @var string The table name on database
*/
protected $table = "lans";
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['ip_address'];
public function getAllRecords()
{
$lan = $this->all();
return $lan;
}
/**
*
* Insert record inside database.
*
* @param array $data
* @return bool true on success, false on failure
*/
public function createRecord(array $data)
{
foreach ($data as $key => $value) {
if (in_array($key,$this->fillable)) {
$this->$key = $value;
}
}
$status = $this->save();
return $status;
}
Вы можете видеть, что я "потерял" вспомогательные методы, которые можно заполнить, в конце я использую только как "needle / haystack".
Возможна ли другая реализация для моегоcreateRecord
метод использования, насколько это возможно, методов / помощников по умолчанию Laravel или я в самом правильном направлении?
Большое спасибо