제목 | 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 프로그램입니다.
|
오호 정보 공유 감사합니다. 라라벨도 배워야하는 마당에..옐로퀀트만 따로 좀 어케 배워보고싶었는데 때마침
코드이그나이터에서 쓸수있게끔 정리 잘해주셔서 감사합니다!