#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);
}
}
Не изменял ваш код из-за долготы, вместо этого я использовал меньший пример, но это та же идея.