小编Mar*_*tin的帖子

Laravel 4雄辩的透视台

我有三个表:users,items和user_items.用户拥有许多项目,而项目属于许多用户.

表格:

Users
id
username
password

Items
id
name
equipable

User_items
id
user_id
item_id
equipped
Run Code Online (Sandbox Code Playgroud)

型号:

class User extends Eloquent {
     public function items()
     {
         return $this->belongsToMany('Item', 'user_items')
                   ->withPivot('equipped');
     } 
}

class Item extends Eloquent {
    public function users()
    {
         return $this->belongsToMany('User', 'user_items');
    }
}
Run Code Online (Sandbox Code Playgroud)

在pivot(user_items)表中,我有一个非常重要的列"配备".

我有一个用户可以装备,取消装备和扔物品的表格.此表单有一个隐藏字段,其中包含pivot(user_items)表行id.因此,当用户试图装备物品时,系统检查物品是否可以装备.

所以,我想要一个带有数据透视数据和项目数据的对象,基于数据透视表中的item_id,我可以发送给处理程序(处理所有逻辑).

所以我要做的是先访问数据透视表,然后访问项目表.

像这样的东西(不起作用):

$item = User::find(1)->items->pivot->find(1);
Run Code Online (Sandbox Code Playgroud)

这可能吗?

php laravel eloquent laravel-4

10
推荐指数
1
解决办法
2万
查看次数

php activerecord 多对多

我有三个模型:

// student_id student_name
Student extends ActiveRecord\Model
{
    static $has_many = array(
        array('studentcourses')
    );
}

// course_id course_name
Course extends ActiveRecord\Model
{
    static $has_many = array(
        array('students')
    );
}

// course_id student_id
Studentcourse extends ActiveRecord\Model
{
    static $belongs_to = array(
        array('student')
    );
}
Run Code Online (Sandbox Code Playgroud)

因此,通过这样做,我将能够轻松地从这些表中检索数据:

$student = Student::find(1);

foreach ($student->studentcourses as $course)
{
    echo $course->name;
}
Run Code Online (Sandbox Code Playgroud)

但是为了输入'studentcourses',我想输入 $student->courses 来获取学生参加的所有课程,并输入 $course->students 来获取特定课程的学生列表。关系设置看起来如何才能做到这一点?

php phpactiverecord

2
推荐指数
1
解决办法
1085
查看次数

标签 统计

php ×2

eloquent ×1

laravel ×1

laravel-4 ×1

phpactiverecord ×1