title: Laravel findOrFail with related data?
body: <p>In my Menu controller I have a method which should display the specified record and all its children.</p>
  
  <p>I have two models: <code>MenuItem</code> and <code>MenuVariation</code>, My items will have many variations as outlined in my methods:</p>
  
  <p><strong>MenuItem model</strong></p>
  
  <pre><code>public function variant()
      {
          return $this-&gt;hasMany('App\MenuVariation');
      }
  </code></pre>
  
  <p><strong>MenuVariation model</strong></p>
  
  <pre><code>public function item()
      {
          return $this-&gt;belongsTo('App\MenuItem', 'menu_item_id');
      }
  </code></pre>
  
  <p>Now in my controller I have the following method:</p>
  
  <pre><code>public function show($id)
  {
      $item = MenuItem::findOrFail($id);
      return $item;
  }
  </code></pre>
  
  <p>...which currently only shows the item record but not its variations, so I have changed the code like this...</p>
  
  <pre><code>public function show($id)
  {
      $item = MenuItem::findOrFail($id)-&gt;with('variant')-&gt;get();
      return $item;
  }
  </code></pre>
  
  <p>but this oddly return ALL items and their variations.</p>
  
  <p>Could someone help me get this working as desired? I would like to still utilise FindOrFail on the Item record, but it should also retrieve any variants (if found).</p>