Мне нужно преобразовать этот запрос для Laravel, и у меня возникают проблемы с попыткой создать инструкцию Insert … Select с использованием Eloquont ORM от Laravel или запросов. Я не уверен, как я буду создавать этот запрос.
Insert into Demand (Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone) Select Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone from " . [dbname] . " Where " . $where_statement
Как можно создать этот запрос с помощью ORM Laravel?
EDIT: Я не уверен, ясно ли это, но я думаю с точки зрения 1 запроса, например, они здесь http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
В одном запросе нет способа сделать это, однако я столкнулся с одной и той же проблемой и хотел удостовериться, что могу продолжать использовать определенный выбор, который я строю с QueryBuilder.
Итак, что вы могли бы сделать, чтобы сохранить что-то наполовину чистое и повторное использование функций, которое ранее создало предложение select, заключается в следующем:
/** * Wherever your Select may come from **/ $select = User::where(...) ->where(...) ->whereIn(...) ->select(array('email','moneyOwing')); /** * get the binding parameters **/ $bindings = $select->getBindings(); /** * now go down to the "Network Layer" * and do a hard coded select, Laravel is a little * stupid here */ $insertQuery = 'INSERT into user_debt_collection (email,dinero) ' . $select->toSql(); \DB::insert($insertQuery, $bindings);
Вы можете использовать:
DB::insert("insert into contacts(contact_id,contact_type,account_id,created_at,updated_at) select f.id,'App\\Friend',f.account_id,f.created_at,f.updated_at from friends as f where f.id=?",[16]);
Во-первых, вам нужно создать модель для Demand
, поэтому вы можете использовать:
$demand = new Demand; $demand->Login = $login; $demand->Name = $name; [...] $demand->save(); // <~ this is your "insert" statement $id = $demand->id;
на$demand = new Demand; $demand->Login = $login; $demand->Name = $name; [...] $demand->save(); // <~ this is your "insert" statement $id = $demand->id;
Затем для вашего оператора выбора вы можете сделать что-то похожее на эти параметры:
$demand = Demand::find($id); // will be similar to: SELECT * FROM Demand WHERE `id` = '$id'; $demand = Demand::where('id', $id)->get(); //same as above $demand = Demand::where('id', $id)->get(array('Login', 'Name')); // will be similar to: SELECT `Login`, `Name` FROM Demand WHERE `id` = '$id';
В руководстве здесь содержится гораздо больше информации.