| 제목 | Laravel의 Eloquent를 Codeigniter3에서 사용하기 Raw | ||
|---|---|---|---|
| 글쓴이 | 김명철 | 작성시각 | 2016/10/22 23:41:35 |
|
|
|||
|
Laravel의 Eloquent 를 Codeigniter에서 잘 사용할 수 있습니다.
전체 코드 : https://gist.github.com/damulhan/82c7ca5b0bddd79ef9cde1ec13604e8f
===================================================
compose.json에 "illuminate/database": "5.0.28", "illuminate/events": "5.0.28",
두 줄을 넣고.
{
"require": {
"illuminate/database": "5.0.28",
"illuminate/events": "5.0.28",
}
}
configs/database.php 에 Eloquent를 사용할 수 있도록 만들어진 capsule을 use합니다.
use Illuminate\Database\Capsule\Manager as Capsule; use Illuminate\Events\Dispatcher;
=================================================== # configs/database.php
/*
* Start Implementation of Eloquent
*/
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
/*
* Create a new capsule
*/
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => $db['default']['hostname'],
'database' => $db['default']['database'],
'username' => $db['default']['username'],
'password' => $db['default']['password'],
'charset' => $db['default']['char_set'],
'collation' => $db['default']['dbcollat'],
'prefix' => $db['default']['dbprefix'],
]);
// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();
// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();
/*
* Add Events to CodeIgniter adapted in our own way
* LINK: http://jamieonsoftware.com/post/90299647695/using-eloquent-orm-inside-codeigniter-with-added
*/
$events = new Dispatcher;
$events->listen('illuminate.query', function($query, $bindings, $time, $name)
{
// Format binding data for sql insertion
foreach ($bindings as $i => $binding)
{
if ($binding instanceof \DateTime)
{
$bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
}
else if (is_string($binding))
{
$bindings[$i] = "'$binding'";
}
}
// Insert bindings into query
$query = str_replace(array('%', '?'), array('%%', '%s'), $query);
$query = vsprintf($query, $bindings);
// Add it into CodeIgniter
$db =& get_instance()->db;
$db->query_times[] = $time;
$db->queries[] = $query;
});
$capsule->setEventDispatcher($events);
사용할 때는 $this->load->model() 하고 사용합니다.
$this->load->model('Person');
$this->load->model('Telephone');
$this->load->model('Telephone_type');
예제 코드
$persons = Person::all();
foreach ( $persons as $person ) {
echo "Name: " . $person->name . '<br><br>';
$telephones = $person->telephone;
print_r($telephones);
foreach ( $telephones as $telephone ) {
echo $telephone->telephone_type->type . ': ' .
$telephone->telephone . '<br>';
}
echo '<hr>';
}
* 전체 코드를 확인바랍니다. https://gist.github.com/damulhan/82c7ca5b0bddd79ef9cde1ec13604e8f
|
|||
| 관련링크 |
https://gist.github.com/damulhan/82c7ca5b0bddd79ef9cde1ec13604e8f |
||
| 다음글 | php를 잘 모르시는 퍼블리셔 분들과의 협업을 위한 소... (1) | ||
| 이전글 | INNODB 사용가능 여부 확인 (2) | ||
|
방문넷
/
2016/10/23 04:16:21 /
추천
0
|
|
한대승(불의회상)
/
2016/10/23 09:44:30 /
추천
0
좋은 정보 공유 감사 합니다.
|
|
초보개발자J
/
2016/10/26 13:55:04 /
추천
0
죄송한데 옐로퀸트가 뭐하는 친구인지 알수있을까여?..
|
|
한대승(불의회상)
/
2016/10/26 15:21:39 /
추천
0
@초보개발자J JAVA의 하이버네이트와 같은 ORM 프로그램입니다.
|
오호 정보 공유 감사합니다. 라라벨도 배워야하는 마당에..옐로퀀트만 따로 좀 어케 배워보고싶었는데 때마침
코드이그나이터에서 쓸수있게끔 정리 잘해주셔서 감사합니다!