Probleme mit der mit mehreren Tabellen verknüpften Suchfunktion:
Der Code lautet wie folgt:
// 实现搜索功能 $productName = Request::param('productName'); $storeName = Request::param('storeName'); if ( !empty($productName) && empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%']; } else if ( !empty($storeName) && empty($productName) ) { $map[] = ['s.name', 'like', '%' . $storeName . '%']; } else if ( !empty($productName) && !empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%']; $map[] = ['s.name', 'like', '%' . $storeName . '%']; } // 定义分页参数 $limit = isset($_GET['limit']) ? $_GET['limit'] : 10; $page = isset($_GET['page']) ? $_GET['page'] : 1; $stockList = StockModel::where($map) -> alias('sk') -> leftJoin('product p', 'sk.product_id = p.id') -> join('store s', 'sk.store_id = s.id') -> where('sk.status', 1) -> order('sk.product_id', 'desc') -> field('sk.*, p.name as product_name, s.name as store_name') -> page($page, $limit) -> select();
1 Im obigen Code möchten wir die Suchfunktion implementieren, jedoch in der $map-Bedingung, da die Suche nach erfolgt Felder der angehängten Tabelle werden durch Join hinzugefügt. Verwenden Sie daher den Alias der angehängten Tabelle, z. B. p.name, s.name. In der generierten SQL-Anweisung liegt ein Problem vor Angehängte Tabellen werden wie folgt gefiltert:
wie folgt: Infolgedessen ist die angehängte Tabelle verschwunden, sodass es falsch ist, den Feldern Aliase hinzuzufügen.
2. Ändern Sie die Suchbedingungen in die Form „Tabellenname.Feld“. Auf diese Weise ist es kein Problem, die Felder der Haupttabelle zu durchsuchen, es gibt jedoch immer noch ein Problem beim Durchsuchen der Anhangtabelle Auf diese Weise generiert, bleibt die Anhangtabelle erhalten, aber die Suche Es gibt immer noch ein Problem, der Fehler ist wie folgt:
Kann mir jemand helfen, wie das geht? ? ?
看你这写的是想在两张关联的表里查数据吧,你用parma接受两个值吗?
你可以这样,只接收一个值$where
然后用链接查询,再加上分组”gruop",试试看一下!
不知道我说的对不对