2014-09-29 2 views
0

Я хотел бы реализовать этот запрос с отношениями Laravel один к одному.Laravel 4.2 От одного до одного отношения возврат NULL

SELECT `path_filepath` from path where `path_id` = (SELECT `path_id` from file where file_id = 1) 

Я хотел бы Filedb::find(1)->path()->path_filepath. но path() всегда возвращает NULL.

[database] 

table: file 
file_id 
file_name 
path_id 

table: path 
path_id 
path_filepath 

Модель

class Filedb extends Eloquent { 
     public $timestamps = false; 
     protected $table = 'file'; 
     protected $primaryKey = 'file_id'; 
     protected $connection = 'dl_database'; 

     public function path(){ 
      return $this->hasOne('Filepath','path_id','path_id'); 
     } 
} 


class Filepath extends Eloquent { 
     public $timestamps = false; 
     protected $table = 'path'; 
     protected $primaryKey = 'path_id'; 
     protected $connection = 'dl_database'; 

     public function filedb() 
     { 
      return $this->belongsTo('Filedb', 'path_id'); 
     } 
} 

Мой контроллер

var_dump(Filedb::find(1)->path()); 
echo '<br>'; 
$queries = DB::connection('dl_database')->getQueryLog(); 
$last_query = end($queries); 
var_dump($queries); 

Outout

NULL 
array(1) { [0]=> array(3) { ["query"]=> string(61) "select * from `file` where `file`.`file_id` = ? limit 1" ["bindings"]=> array(1) { [0]=> int(1) } ["time"]=> float(0.85) } } 

ответ

0

Это belongsTo не hasOne

public function path(){ 
    return $this->belongsTo('Filepath','path_id','path_id'); 
} 

и это hasOne

public function filedb() 
{ 
    return $this->hasOne('Filedb', 'path_id', 'path_id'); 
} 
+0

Благодаря рабочих, но функция путь отсутствует возврат. – dragon1993

+0

@ dragon1993 хорошо, да, точно так же, как ваш. Я скопировал его из вашего кода;) –

Смежные вопросы