Задать вопрос
@GaserV

Почему не работает связь?

Добрый день. Я уже третий день все не могу понять, почему не достаются записи? Уже с ума сойду скоро.
По делу. Есть таблицф users, orders, items. Orders: id,user_id,item_id;

Модель User:
<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model 
{	

	public $timestamps = false;

	protected $table = 'users';

	protected $fillable = ['','firstname','lastname','login','password','email','phone','adress','signup-date','total-orders','activated','type'];

	public function orders()
	{
		return $this->belongsToMany('App\Order');
	}

}


Пытаюсь вывести как @foreach($user->orders as $order) но бьет ошибку:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'fivegsm.id' doesn't exist (SQL: select `orders`.*, `id`.`user_id` as `pivot_user_id`, `id`.`order_id` as `pivot_order_id` from `orders` inner join `id` on `orders`.`id` = `id`.`order_id` where `id`.`user_id` = 4) (View: /Applications/MAMP/htdocs/blog/resources/views/user/orders.blade.php)

Ну что я не так делаю то?(
  • Вопрос задан
  • 436 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Alex_Wells
@Alex_Wells
PHP/Kotlin
Ну и снова ты со своим "$this->belongsTo". Я же уже тебе обьяснял, что "belongsTo" - "ЭТО принадлежит кому-то/чему-то".. так у тебя "User" (ЭТО = $this) принадлежит "App\Order"? Нет конечно, у юзера есть много ордеров, то-есть "$this->hasMany('App\Order')" - дословно в переводе "ЭТО имеет много ордеров", а "ЭТО" = $this = User.

А вот уже Order belongs to User, то-есть Ордер принадлежит юзеру, и в модели ордера уже используешь belongs to User.

Надеюсь понятно)

PS: не юзай protected $table, это бесполезно.

PS: https://vk.com/five_gsm_boss - им сайт делаешь?))0 Не называйте базу данных по названию проекта.
Ответ написан
belongsToMany вообще не применим в данной ситуации - это отношение многие ко многим. Вы можете использовать его для того, чтобы получить Itemы конкретных пользователей, да и то если пропишете таблицу Orders как промежуточную. Используйте hasMany для получения заказов и почитайте вдумчиво различие между всеми видами связей в документации. Очень вдумчиво. Потому что пока не осознаете различия в типах связи, не сможете их использовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы