子查询(Sub Query),也称作内查询(Inner Query)或嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。

User::whereIn('id', function($query){ 
    $query->select('user_id') 
    ->from('admin_user') 
    ->whereIn('type', ['1', '2']); 
})->get();

获得的 SQL 如下:

SELECT * FROM `user` where `id` IN (
    SELECT `user_id` FROM `admin_user` WHERE `type` IN (1, 2)
$sub = Abc::where(..)->groupBy(..); // Eloquent Builder instance
$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
->mergeBindings($sub->getQuery()) 
->count();
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Query
$son = [1,2,3];
$sql = "select * from orders where recuid in ({$son}) order by createtime";
DB::table(DB::raw("({$sql}) as cash"))->groupBy("recuid")->g...
				
您可以使用 Laravel 的 Eloquent ORM 和递归方法来实现多级父子表查询整合成树的功能。 首先,您需要定义您的模型,并且在模型定义表的关系。假设您的表名为 `categories`,那么您的模型代码可能如下所示: ```php class Category extends Model public function parent() return $this->belongsTo(Category::class, 'parent_id'); public function children() return $this->hasMany(Category::class, 'parent_id'); 在上面的代码,我们定义了 `parent()` 方法和 `children()` 方法来表示当前分类的父分类和子分类,这里使用Laravel 的 Eloquent ORM 的关系映射方法。 接下来,您可以编写一个递归方法来将您的分类表数据整合成树形结构。代码如下: ```php function buildTree($categories, $parentId = null) { $branch = []; foreach ($categories as $category) { if ($category->parent_id == $parentId) { $children = buildTree($categories, $category->id); if ($children) { $category->children = $children; $branch[] = $category; return $branch; 在上面的代码,我们使用了递归的方式,从顶级分类开始,递归地查询当前分类的子分类,并将它们整合成树形结构。 最后,您可以在控制器调用这个方法,并将查询到的分类数据传递给它,代码如下: ```php use App\Models\Category; class CategoryController extends Controller public function index() $categories = Category::all(); $tree = buildTree($categories); return view('categories.index', ['categories' => $tree]); 在上面的代码,我们首先查询了所有的分类数据,然后调用 `buildTree()` 方法将分类数据整合成树形结构,并将整合后的数据传递给视图渲染。