2
Good afternoon guys. I’m developing an application that uses the Framework. I have the error below when trying to save Checklist items. The error occurs in the second save() of the registration method().
Model: Checklistitem
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use DB;
use SoftDeletes;
class ChecklistItem extends Model
{
protected $table = "checklist_itens";
protected $primaryKey = 'id';
public $incrementing = false;
public $timestamps = false;
public function checklistItem()
{
return $this->belongsTo('App\Models\ChecklistItem', 'id');
}
//Este método salva os dados do Checklist do Item
public function salvar(ChecklistItem $checklistItem) : Array
{
$checklistItem = $this->save();
if($checklistItem){
return[
'success' => true,
'message' => 'Sucesso ao cadastrar'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao cadastrar'
];
}
}
//Este método remove os dados do Checklist do Item
public function deletar(ChecklistItem $checklistItem) : Array
{
$checklistItem = $this->delete();
if($checklistItem){
return[
'success' => true,
'message' => 'Sucesso ao excluir'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao excluir'
];
}
}
//Este método atualiza os dados do Checklist do Item
public function alterar(ChecklistItem $checklistItem) : Array
{
$checklistItem = $this->save();
if($checklistItem){
return[
'success' => true,
'message' => 'Sucesso ao atualizar'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao atualizar'
];
}
}
}
Controller: Checklistitemcontroller
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use App\Models\ChecklistItem;
class ChecklistItemController extends Controller
{
private $checklistItem;
//Construtor do contato do checklistItem
public function __construct(ChecklistItem $checklistItem)
{
$this->checklistItem = $checklistItem;
}
public function index()
{
$checklistItem = ChecklistItem::all();
return view('admin.checklistItem.index', ['checklistsItens' => $checklistItem]);
}
//Este método apresenta o formulário para cadastrar um novo checklists de itens
public function novo()
{
$checklistItem = ChecklistItem::all();
return view('admin.checklistItem.novo',['checklistsItens' => $checklistItem]);
}
//Método para cadastrar um checklist de item
public function cadastro(Request $request)
{
$checklistItem = ChecklistItem::all();
$checklistItem->descricao_item = $request->get('descricao_item');
$checklistItem->ativo = $request->get('ativo');
//// dd($checklistItem);
$response = $checklistItem->salvar($checklistItem);
dd($response);
if($response['success']){
return redirect()
->route('admin.checklistItem')
->with('success',$response['message']);
}
else{
return redirect()
->back()
->with('error',$response['message']);
}
}
//Método que redireciona para a página de atualizar o checklist Item
public function edita($id)
{
return view('admin.checklistItem.edita', ['checklistsItens' => ChecklistItem::find($id)]);
}
//Este método remove o contato do checklist do Item
public function remove(Request $request)
{
$checklistItem = ChecklistItem::find($request->id);
if (!$checklistItem)
return response()
->json(['error' => 'not_found'], 404);
$response = $checklistItem->deletar($checklistItem);
if($response['success'])
{
return response()
->json(['success' => $response['message']], 200);
}else
{
// Caso não delete, informa um erro inesperado
return redirect()
->json(['error' => $response['message']], 500);
}
}
//Método de consulta do contato do checklist do Item
public function consulta(Request $request)
{
$condicoes = [];
if($request->descricao_item != null){
$condicoes[] = [DB::raw('upper(descricao_item)'), 'like', DB::raw('upper("%'.$request->get('descricao_item').'%")')];
}
if($request->ativo != null){
$condicoes[] = [DB::raw('upper(ativo)'), 'like', DB::raw('upper("%'.$request->get('ativo').'%")')];
}
$request->flash(['descricao_item','ativo']);
$checklistItem = ChecklistItem::where($condicoes)->orderBy('descricao_item')->get();
return view('admin.checklistItem.index', ['checklistsItens' => $checklistItem]);
}
//Método para atualiza o Checklist do Item
public function atualiza(Request $request)
{
$checklistItem= ChecklistItem::find($request->get('id'));
$checklistItem->descricao_item = $request->get('descricao_item');
$checklistItem->ativo = $request->get('ativo');
$response = $checklistItem->alterar($checklistItem);
if($response['success'])
{
return redirect()
->route('admin.checklistItem')
->with('success',$response['message']);
}else
{
return redirect()
->back()
->with('error',$response['message']);
}
}
}
Route: web.php
//Gerenciar dados do ChecklistItem
$this->group(['middleware' => ['auth'], 'namespace' =>'admin','prefix'=>'checklistsItens'], function(){
//Inicio das Rotas de gerenciar os checklistsItens
$this->post('cadastro','ChecklistItemController@cadastro')->name('checklistItem.cadastro');
$this->post('checklistItem','ChecklistItemController@consulta')->name('checklistItem.consulta');
$this->post('atualiza', 'ChecklistItemController@atualiza')->name('checklistItem.atualiza');
$this->post('remove','ChecklistItemController@remove')->name('checklistItem.remove');
$this->get('edita/{id}','ChecklistItemController@edita')->name('checklistItem.edita');
$this->get('novo','ChecklistItemController@novo')->name('checklistItem.novo');
$this->get('checklistItem','ChecklistItemController@index')->name('admin.checklistItem');
//Final das Rotas de gerenciar dados do checklistsItens
});
Apparently the method
all
returns aCollection
, not aModel
. The methodsalvar
exists in theModel
.– Woss
That’s right Anderson, instead of $checklistItem = Checklistitem::all(); try to make $checklistItem = new Checklistitem;
– LSA
Thanks guys, the solution was to use the $checklistItem = new Checklistitem; in the registration() method instead of $checklistItem = Checklistitem::all();
– Ruama