Я пошел с адаптацией решения @gustavohenke, внедряя cast ObjectId в try-catch, обернутый вокруг исходного кода, чтобы использовать отказ в методе ObjectId в качестве метода проверки.
Controller.prototype.show = function(id, res) {
try {
var _id = mongoose.Types.ObjectId.fromString(id);
// the original code stays the same, with _id instead of id:
this.model.findById(_id, function(err, doc) {
if (err) {
throw err;
}
if (!doc) {
res.send(404);
}
return res.send(doc);
});
} catch (err) {
res.json(404, err);
}
};
Вы должны попробовать это
SELECT * FROM Tabel1 WHERE email LIKE '%' +MOB+'%'
Давайте начнем с ответа на вопрос по SQL, все, что в кавычках, является литералом для SQL, поэтому вам нужно использовать ссылку на столбец и добавлять символы подстановки. Вы можете сделать это следующим образом:
SELECT * FROM Table1 WHERE email LIKE CONCAT('%', MOB, '%');
Теперь давайте посмотрим на Laravel, третий аргумент, где ожидается буквальное значение, а не другой столбец. Вы можете преодолеть это с помощью гдеRaw или DB :: raw :
Table1::whereRaw("email LIKE CONCAT('%', MOB, '%')");
или
Table1::where('email', 'LIKE', DB::raw("CONCAT('%', MOB, '%')"));