Застрял в laravel при вставке данных в базу данных

#laravel #laravel-5.3

#laravel #laravel-5.3

Вопрос:

Я пытаюсь вставить JSON, отправленный postman, и хочу сохранить его в базе данных, но он не вставляется в базу данных.Я использую красноречивую модель для работы с базой данных.

вот мой JSON

 {"mcode":"123","code":"321","title":"Mr.", "name":"sameer","mobile":"7798616828","email":"sameer@waev.in","address":"amravati","state":"maharashtra", "city":"amravati"}
  

Это мой контроллер

 namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequests;

use Appmember;

class inquiryController extends Controller
{
    public function store(Request $request)
    {

        $member = new member;
       // $member->title=$request->title;

        $member->mcode = $request->mcode;
        $member->code = $request->code;
        $member->title = $request->title;
        $member->name = $request->name;
        $member->mobile = $request->mobile;
        $member->email = $request->email;
        $member->address = $request->address;
        $member->state = $request->state;
        $member->city = $request->city;

        $member->save();


        return "ok";

    }
}
  

Это моя модель

 namespace App;


use IlluminateDatabaseEloquentModel;

class member extends Model
{
    //
    protected $fillable=['mcode','code','title','name','mobile','email','address','state', 'city'];
}
  

Комментарии:

1. Не могли бы вы сказать, возникает ли какая-либо ошибка при вставке?

2. Ваша модель настроена на то, чтобы принимать только имя. Вот почему больше ничего не вставляется.

3. $fillable Массив вмешивается только для массовой вставки. Здесь он вручную настраивает свои свойства, чтобы они работали. Нам нужно какое-то сообщение об ошибке, чтобы ответить на вопрос.

4. я отправляю данные от postman, поэтому я получил ошибку «Внутренняя ошибка сервера 500», и именно поэтому я не могу отследить ошибку.

5. Я внес изменения в $fillable, как отредактировано выше.

Ответ №1:

Вам нужно поместить все доступные поля внутрь:

 protected $fillable = [ 'name', 'mcode' ....];
  

или не объявляйте это поле — это приведет к тому, что вы сможете добавлять данные, которые не являются массовыми (т. Е. $member->fill($data) ). Это точно так же, как вы делали в примере выше.

Комментарии:

1. На самом деле я сделал то же самое в своей модели, например protected $ fillable=[‘mcode’,’code’,’title’,’name’,’mobile’, ’email’, ‘address’, ‘state’, ‘city’]; но все равно это не работает.

Ответ №2:

Ну, $fillable переменная предназначена для массового назначения в контроллерах, попробуйте использовать следующий фрагмент, чтобы посмотреть, работает ли он:

 // AppPerson.php
public class Person {
    $fillable = ['name', 'age'];
}

AppControllersPersonController.php
public class PersonController extends Controller {
    public function store(Request $request) {
        $data = $request->only('name', 'age'); // you can use Input::all() too
        return AppPerson::create($data);
    }
}
  

Не изменял ваш код из-за долготы, вместо этого я использовал меньший пример, но это та же идея.