Masalah dengan fungsi carian berkaitan berbilang jadual:
Kod adalah seperti berikut:
// 实现搜索功能 $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 Dalam kod di atas, kami ingin melaksanakan fungsi carian, tetapi dalam keadaan $map, kerana carian adalah untuk medan jadual yang dilampirkan ditambah melalui gabungan, jadi gunakan alias jadual yang dilampirkan Bentuk medan, seperti: p.name, s.name, terdapat masalah dengan carian Dalam pernyataan SQL yang dihasilkan jadual yang dilampirkan ditapis, seperti berikut:
seperti ini Akibatnya, jadual yang dilampirkan hilang, jadi adalah salah untuk menambah alias pada medan.
2. dijana dengan cara ini, jadual lampiran dikekalkan, tetapi carian Masih terdapat masalah, ralat adalah seperti berikut:
Bolehkah sesiapa membantu saya, bagaimana untuk melakukan ini? ? ?
Nampaknya apa yang anda tulis adalah untuk menyemak data dalam dua jadual yang berkaitan Adakah anda menggunakan parma untuk menerima dua nilai?
Anda boleh melakukan ini, terima hanya satu nilai $where
dan kemudian gunakan pertanyaan pautan, tambah kumpulan "gruop", cubalah!
Saya tidak tahu sama ada apa yang saya katakan itu betul