Я использую Laravel 5.1 Просто хочу спросить, как отобразить ORM мастер-деталь, когда ребенок не возвращают данные, основные данные, не показываяLaravel Eloquent Master Detail результат
Это мой Мастер Модель
<?php
namespace SpekWeb;
use Illuminate\Database\Eloquent\Model;
class ProdukGroup extends Model
{
public $table = 'product_group';
public $primaryKey = 'prd_group';
public function telcoProduct() {
return $this->hasMany('SpekWeb\TelcoProduct', 'prd_group', 'prd_group');
}
}
Child Model
<?php
namespace SpekWeb;
use Illuminate\Database\Eloquent\Model;
class TelcoProduct extends Model
{
public $table = 'telco_product';
public $primaryKey = 'tel_prd';
}
И это мой контроллер
<?php
namespace SpekWeb\Http\Controllers;
use Illuminate\Http\Request;
use SpekWeb\Http\Requests;
use SpekWeb\Http\Controllers\Controller;
use SpekWeb\ProdukGroup;
use SpekWeb\TelcoProduct;
class ProdukController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$memberPrices = ProdukGroup::with(array(
'telcoProduct' => function($tpJoin) {
$tpJoin->join('wd_productprice','telco_product.tel_prd','=','wd_productprice.tel_prd');
$tpJoin->where('charge','>=',0);
$tpJoin->whereMemType('1'); //variabel
$tpJoin->where(function($qWhere) {
$qWhere->whereKodeKec('ASTAY'); //variabel
$qWhere->orWhereNull('cluster_gid');
});
},
)
)
->has('telcoProduct')
->get();
return $memberPrices;
}
}
Я хочу, чтобы основная запись не показывалась, когда я отфильтровывал код внутри области «с», используя -> has («telcoProduct») все еще не работает для меня. Основная запись по-прежнему отображается в Blade Views. Есть ли уловка для решения этих проблем?
Ваш измененный запрос возвращает только данные ProdukGroup. Я хочу, чтобы $ memberPrice также возвращала свою дочернюю запись. –
Смотрите мое обновленное сообщение. 'whereHas' проверяет только определенные критерии, но не хочет их загружать. – Tim