Attualmente sto riscontrando problemi con una relazione: n con Laravel 4, sto avendo un errore con la tabella pivot che sta interrogando su una tabella con entrambi i componenti al singolare nome. Creo un perno lands_objs tabella e popolarla:Laravel 4 rapporto molti a molti non funzionante, tabella pivot non trovata
I modelli sono:
<?php
class Obj extends Eloquent
{
protected $guarded = array();
public static $rules = array();
public $timestamps = false;
public function land()
{
return $this->belongsToMany('Land');
}
<?php
class Land extends Eloquent
{
protected $guarded = array();
public static $rules = array();
public $timestamps = false;
public function objs()
{
return $this->belongsToMany('Obj');
}
}
Ecco come Io popolo della tabella pivot seguendo gli standard. Naturalmente terre, OBJS e lands_objs tabelle esistono:
<?php
use Illuminate\Database\Migrations\Migration;
class CreateLandsObjsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('lands_objs', function($table) {
$table->integer('land_id');
$table->integer('obj_id');
});
}
}
Con questa struttura dovrei essere in grado di fare grazie ad eloquente:
$land = Land::find(1); //checked loads land fine
$objs = $land->objs; //--> HERE I TAKE THE ERROR
ma prendo l'errore:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'taylor.land_obj' doesn't exist
(SQL: select `objs`.*, `land_obj`.`land_id` as `pivot_land_id`, `land_obj`.`obj_id`
as `pivot_obj_id` from `objs` inner join `land_obj` on `objs`.`id` = `land_obj`.`obj_id`
where `land_obj`.`land_id` = ?) (Bindings: array (0 => 1,))
Laravel non dovrebbe creare il tavolo lands_objs nonostante quering su land_obj? Mi sto perdendo qualcosa?
Grazie mille.
Puoi dirmi qual è la differenza tra l'utilizzo di 2 ** ** belongsTo metodi e il metodo ** ** hasManyThrough? Non capisco, ma usare hasManyTrough non funziona per me ... – kitensei
Dato lo scenario un autore ha molti messaggi e un post ha molti commenti. Avresti 2 appartiene ai metodi in genere (autore di postare e postare commenti), tuttavia dici di voler selezionare tutti i commenti su tutti i post per un determinato autore, quindi useresti hasManyThrough perché i commenti non sono direttamente correlati all'Autore ma sono legati all'Autore tramite un altro modello (post). Senza hasManyThrough dovresti selezionare tutti i post dell'autore, quindi eseguirli in loop ottenendo tutti i commenti, quindi eseguire una sorta di elaborazione per ottenere il formato, l'ordine, ecc. Che cercavi. – Brent