Your query is just on the Joke table.
You could eagerload the categories ie.
$jokes = Joke::with('JokesCategory')->get();
Question
I have following table
Schema::create('jokes_categories', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('is_active');
$table->timestamps();
});
Schema::create('jokes', function(Blueprint $table) {
$table->increments('id');
$table->string('content', 200)->unique();;
$table->enum('is_active', array('Y', 'N'));
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('jokes_categories');
$table->timestamps();
});
In the jokes table category_id
is a foreign key and it has a one-to-many relationship with jokes_categories
In the model I have the following:
class Joke extends \Eloquent {
public static $rules = array();
// Don't forget to fill this array
protected $fillable = array();
public function JokesCategory(){
return $this->belongsTo('JokesCategory');
}
}
In the controller I have the following:
$jokes = Joke::all();
But it does not pull through joke_categories
.name
(I was under the impression that the model definition will directly help to pull related models)
What could be the solution?
Solution
Your query is just on the Joke table.
You could eagerload the categories ie.
$jokes = Joke::with('JokesCategory')->get();
OTHER TIPS
The convention is actually camel case instead of pascal case, otherwise Laravel doesn't seem to automatically load the relationships. I made the same mistake and couldn't figure out why my relationships where not loading automatically.
public function jokesCategory()