Laravel 拉雷维尔雄辩的索特比和OrderBy

Laravel 拉雷维尔雄辩的索特比和OrderBy,laravel,eloquent,Laravel,Eloquent,我得去看看相关的桌子 产品 身份证 名义 子管道(子表) 身份证 名义 产品标识 我需要按Producto.Nombre排序,然后再按SubProducto.Nombre排序 它是以下各项的组合: $subProductos=SubProducto::with('producto')->get()->sortBy('producto.nombre') 及 $subProductos=SubProducto::orderBy('nombre','ASC')->get() 有什么帮助吗?谢谢

我得去看看相关的桌子

产品

  • 身份证
  • 名义
子管道(子表)

  • 身份证
  • 名义
  • 产品标识
我需要按Producto.Nombre排序,然后再按SubProducto.Nombre排序

它是以下各项的组合:

$subProductos=SubProducto::with('producto')->get()->sortBy('producto.nombre')

$subProductos=SubProducto::orderBy('nombre','ASC')->get()

有什么帮助吗?谢谢

Producto.php模型

class producto extends Model
{
    public function SubProductos()
    {
        return $this->hasMany('Certifier\SubProducto');
    }
}
模型SubProducto.PHP

class SubProducto extends Model
{
    public function EmpresaSubProductos()
    {
        return $this->hasMany('Certifier\EmpresaSubProducto');
    }
    public function producto()
    {
        return $this->belongsTo('Certifier\Producto');
    }
    public function subProductoFormateado() {
        return $this->producto->nombre . ' - ' . $this->nombre;
    }
}

一些建议,你的函数应该使用小写leter,你的类应该使用大写leter

我编辑了代码:

$productos= producto::with(array('SubProductos'=>function($query){
         $query->orderBy('nombre', 'ASC');
     }))
->orderBy('nombre')
->get();

一些建议,你的函数应该使用小写leter,你的类应该使用大写leter

我编辑了代码:

$productos= producto::with(array('SubProductos'=>function($query){
         $query->orderBy('nombre', 'ASC');
     }))
->orderBy('nombre')
->get();

我认为,按照第一条注释中的建议,将所有需要的字段组合在一起的回调可能会起到作用

我认为,按照第一条评论中的建议,将所有需要的字段组合在一起的回调可能会奏效

我假设您在blade.php中将它们作为视图进行排序

从控制器开始,只需定义
$productos
项即可

// retrieving productos from Model
$productos = producto::orderBy('nombre')->get()->all();

return view( 'your.blade.view' )->with( [ 'productos' => $productos ] );
在blade.php中,您可以像这样显示
$productos

<ul class="list-producto">
@foreach( $productos as $producto )
   <li class="producto">
       <span>{{ $producto->nombre }}</span>
       @if( $productos->sub_productos )
           <ul class="list-sub-producto">
           @foreach( $productos->sub_productos->sortBy('nombre')->all() as $sub_producto )
               <li class="sub-producto">
                   <span>{{ $producto->nombre }} - {{ $sub_producto->nombre }}</span>
               </li>
           @endforeach
           </ul>
       @endif
   </li>
@endforeach
</ul>
    @foreach($productos作为$producto)
  • {{$producto->nombre} @如果($productos->sub_productos)
      @foreach($productos->sub_productos->sortBy('nombre')->all()作为$sub_producto)
    • {{$producto->nombre}}-{{$sub_producto->nombre}
    • @endforeach
    @恩迪夫
  • @endforeach

需要注意的是,您应该将
class producto
替换为
class producto
,因为模型通常使用。

我假设您在blade.php中将它们作为视图进行排序

从控制器开始,只需定义
$productos
项即可

// retrieving productos from Model
$productos = producto::orderBy('nombre')->get()->all();

return view( 'your.blade.view' )->with( [ 'productos' => $productos ] );
在blade.php中,您可以像这样显示
$productos

<ul class="list-producto">
@foreach( $productos as $producto )
   <li class="producto">
       <span>{{ $producto->nombre }}</span>
       @if( $productos->sub_productos )
           <ul class="list-sub-producto">
           @foreach( $productos->sub_productos->sortBy('nombre')->all() as $sub_producto )
               <li class="sub-producto">
                   <span>{{ $producto->nombre }} - {{ $sub_producto->nombre }}</span>
               </li>
           @endforeach
           </ul>
       @endif
   </li>
@endforeach
</ul>
    @foreach($productos作为$producto)
  • {{$producto->nombre} @如果($productos->sub_productos)
      @foreach($productos->sub_productos->sortBy('nombre')->all()作为$sub_producto)
    • {{$producto->nombre}}-{{$sub_producto->nombre}
    • @endforeach
    @恩迪夫
  • @endforeach
需要注意的是,您应该将
class producto
替换为
class producto
,因为模型通常使用。

使用以下方法解决:

$subProductos = SubProducto::selectRaw('sub_productos.*, productos.nombre as nombre_producto')
  ->join('productos', 'productos.id', '=', 'sub_productos.producto_id')
  ->orderBy('productos.nombre', 'ASC')
  ->orderBy('sub_productos.nombre', 'ASC')
  ->get();
不知道为什么,但这是关键:

$subProductos=SubProducto::selectRaw('sub_productos.*,productos.nombre作为nombre_producto

使用以下方法解决:

$subProductos = SubProducto::selectRaw('sub_productos.*, productos.nombre as nombre_producto')
  ->join('productos', 'productos.id', '=', 'sub_productos.producto_id')
  ->orderBy('productos.nombre', 'ASC')
  ->orderBy('sub_productos.nombre', 'ASC')
  ->get();
不知道为什么,但这是关键:


$subProductos=SubProducto::selectRaw('sub_productos.*,productos.nombre作为nombre_producto

谢谢。出现错误:Parse error:syntax error,意外的“}”SubProductos是子表。我需要查询所有SubProductos。如前所述,更改“SubProductos”“不管你叫什么名字,这个词都是用来表达productos和subproductos之间的关系的函数。如果你不明白我说的话,给我们看看你的模型代码,我们会帮你的。我添加了模型hanks。出现错误:Parse error:syntax error,意外的“}”SubProductos是子表。我需要查询所有SubProductos。如前所述,更改“SubProductos”“不管你叫什么名字,都可以用这个词来表示构成productos和subproductos之间关系的函数。如果你不明白我说的话,给我们看看你的模型代码,我们会帮助你。我添加了模型。我尝试了这个$subproductos=SubProducto::with('producto')->get()->sortBy('producto.nombre')->sortBy('SubProducto.nombre');但是没有使用第二个“nombre”,我尝试了$subProductos=SubProducto::with('producto')->get()->sortBy('producto.nombre')->sortBy('SubProducto.nombre');但不使用第二个“名词”