Bonjour,
Voila je rencontre un petit problème avec mon code.
Je fais un petit système de réservation pour des terrains de sports.
Je vois mes tables comme ceci :
<a target="_blank" href="http://www.hostingpics.net" title="Hebergeur d'image"><img src="http://img11.hostingpics.net/pics/196771DataBase.jpg" border="0" alt="Hebergeur d'image" /></a>
Concrètement,
- un terrain peut avoir zéro ou plusieurs réservations
- une réservation est lier à un terrain et à un utilisateur
- un utilisateur peut avoir plusieurs réservations
Afin de rentrer les informations,
J'envoie en AJAX les différentes informations comme ceci :
$('#btnBook').on('click', function(){
var CSRF_TOKEN = $('meta[name="csrf_token"]').attr('content');
var dataFieldID = [];
var dataDate = [];
$('.selected').each(function () {
dataFieldID.push($(this).data('field'));
dataDate.push($(this).data('date') + ' ' + $(this).text() + ':00');
})
$.ajax({
url: './reservation/booking',
type: 'POST',
data: {field_id : dataFieldID, start_booking : dataDate, _token: CSRF_TOKEN},
success: function (xhr) {
},
error: function()
{
}
});
})
})
BookingController :
class BookingsController extends Controller
{
protected $user;
protected $booking;
public function __construct()
{
$this->user = Auth::user();
$this->booking = new Booking();
}
public function store(BookingsRequest $request)
{
$data = $request->only('user_id', 'field_id', 'start_booking');
$data['user_id'] = $this->user->id;
$this->booking->create($data);
}
}
Mon model Booking:
class Booking extends Model
{
protected $fillable = ['start_booking', 'field_id' , 'user_id'];
public function sport_fields(){
return $this->belongsTo('App\Sport_fields');
}
public function users(){
return $this->belongsTo('App\User');
}
}
Premièrement voici l'erreur que j'obtiens :
QueryException in Connection.php line 673:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'field_id' in 'where clause' (SQL: select count(*) as aggregate from sport_fields where field_id in (2))
Apparemment, c'est à cause de ma requête ajax où le data n'est pas appelé ID mais field_id.
Mais si je change ça , voici l'erreur
ErrorException in helpers.php line 748:
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
in helpers.php line 748
at HandleExceptions->handleError('2', 'preg_replace(): Parameter mismatch, pattern is a string while replacement is an array', 'G:\XAMP\xampp\htdocs\badTFE\vendor\laravel\framework\src\Illuminate\Support\helpers.php', '748', array('search' => '\?', 'replace' => array('1', array('2'), array('30/05/2016'), '2016-06-01 19:24:35', '2016-06-01 19:24:35'), 'subject' => 'insert into bookings (user_id, field_id, start_booking, updated_at, created_at) values (1, ?, ?, ?, ?)', 'value' => array('2')))
De plus on peut remarquer qu'il cherche à rentrer un timestamp updated_at, created_at alors qu'ils n'existent pas dans ma table.
Ma table Booking :
public function up()
{
Schema::create('bookings', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->index();
$table->integer('field_id')->unsigned()->index();
$table->timestamp('start_booking');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('field_id')->references('id')->on('sport_fields')->onDelete('cascade');
});
}
Si quelqu'un voit le problème, ça m'aiderait beaucoup, je galère un peu débuger tout ça ...
Merci d'avance