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