2012-06-25 205 views
0

我想這樣做對我的看法(用戶,組,users_groups),但it's不工作:PHP-ActiveRecord的 - 關係的has_many

<?php echo $user->group->name;?> 

我有3個表

- users (id, name) 
- groups (id, name) 
- users_groups (id, user_id, group_id) 

我有2個型號

class User extends ActiveRecord\Model 
{ 
    static $belongs_to = array(
     array('group', 'through' => 'users_groups') 
    ); 
} 

class Group extends ActiveRecord\Model 
{ 
    static $has_many = array(
     array('users' , 'through' => 'users_groups') 
    ); 
} 

我的模特兒有錯或錯過什麼?我需要另一個模型users_groups?如果是的話,會怎麼樣呢?

我需要幫助,我找不到正確的方法。

謝謝!

+0

你在這裏的user_id的名字嗎? –

+0

是的,在users_groups表中是關係。 – Sangar82

+0

你可以在用戶類中得到用戶的組名,也可以得到組類的用戶列表 –

回答

2

解決的辦法是:

class User extends ActiveRecord\Model 
{ 
    static $has_many = array(
    array('groups', 'through' => 'usersgroups', 'order'=>'id asc'), 
     array('usersgroups') 
    ); 
} 


class Group extends ActiveRecord\Model 
{ 
    static $has_many = array(
     array('users' , 'through' => 'usersgroups'), 
     array('usersgroups') 
    ); 
} 

class UsersGroup extends ActiveRecord\Model 
{ 
    static $table_name = 'users_groups'; 

    static $belongs_to = array(
     array('user'), 
     array('group') 
    ); 
} 

的問題是與第三模型(奇異UsersGroup)

0
class User extends ActiveRecord\Model 
{ 
    function get_group($user_id){ 
     $query = "SELECT name FROM groups 
        LEFT JOIN users_groups ON (groups.id=users_groups.group_id) 
        LEFT JOIN users ON (users_groups.user_id=users.id)"; 
     $this->group = mysql_fetch_object($query); 
    } 
} 

添加此功能,您的用戶功能

+0

php-activerecord關係(我的問題是我的模型沒有適當的關聯) – Sangar82

0

我想回答你的問題是在manual。這是您嘗試實施的多對多關聯的一個示例。在這種情況下,組是訂單,users_groups是支付。

enter image description here

class Order extends ActiveRecord\Model { 
    static $has_many = array(
    array('payments'), 
    array('users', 'through' => 'payments') 
    ); 
} 

class Payment extends ActiveRecord\Model { 
    static $belongs_to = array(
    array('user'), 
    array('order') 
    ); 
} 

class User extends ActiveRecord\Model { 
    static $has_many = array(
    array('payments') 
    ); 
} 

$order = Order::first(); 
# direct access to users 
print_r($order->users); # will print an array of User object 
+0

我沒有運氣就遵循這本手冊,我的問題是第三個模型,他的名字和關聯。 – Sangar82