Похоже, вы хотите, чтобы отношения между многими людьми были между Users
и Items
, но вы также хотите отслеживать часы на сводной таблице. Итак, сначала вы определите отношения «многие ко многим», используя belongsToMany()
, и вы сообщите Laravel, что у вас есть дополнительные данные на сводной таблице с помощью функции withPivot()
. Ваши классы будут выглядеть следующим образом:
class User extends Eloquent {
protected $table = 'users';
public function items() {
return $this->belongsToMany('Item', 'records')->withPivot('hour');
}
}
class Item extends Eloquent {
protected $table = 'items';
public function users() {
return $this->belongsToMany('User', 'records')->withPivot('hour');
}
}
Затем, чтобы получить доступ к hour
поля, которое вы могли бы сделать это:
$user = User::first(); // First User
$item = $user->items()->first(); // User's first Item
$hour = $item->pivot->hour; // The 'hour' on the User-Item relationship
Кроме того, текущая схема колонки имен является правильной для Laravel поэтому не чувствую, что вам нужно изменить его. Если вы измените имена столбцов, то вам необходимо определить их в belongsToMany()
способом, как это:
$this->belongsToMany('ModelName', 'pivot_table', 'foreign_key', 'other_key');
// For example, in Items::users() you would have this:
$this->belongsToMany('User', 'records', 'users_id', 'items_id');
Наконец, я предполагаю, что таблицы с именем users
, items
и records
. Если это не так, просто замените все экземпляры users
, items
и records
с вашими фактическими именами таблиц.
Что не работает должным образом? Каков ваш желаемый результат? Что вы получаете в настоящее время?Если есть ошибка, можете ли вы обновить свой вопрос с помощью трассировки стека? – Ymartin