Я хочу создать отношения, которые проверяют, понравился ли пользователь сообщение. Чтобы сделать это, отношения должны проверить, зарегистрирован ли пользователь, а затем использовать их user_id
, чтобы получить подобную запись. Что-то вроде:Состояние отношений, если пользователь вошел в систему
public function userLike() {
if (Auth::check()) return $this->hasOne('App\Like')->where('user_id', Auth::user()->id);
}
Однако это не работает. Кроме того, если пользователь не вошел в систему и эта связь вызвана (по умолчанию она), она вернет ошибку.
Каков правильный способ сделать это?
Вашего отношению должны не проверяйте, зарегистрирован ли пользователь, вы определяете отношения для пользователя и, следовательно, он будет загружен, если есть зарегистрированный пользователь. в вашем маршруте или контроллерах, которые вы можете сделать, если (\ Auth :: check()), чтобы увидеть, есть ли зарегистрированный пользователь –
, проблема с кодом выше: 'Auth :: check()' возвращает 'false',' ' Функция userLike() 'ничего не возвращала. поэтому, если вы вызываете 'User :: userLike()' или тому подобное, он возвращает null в код laravel, который имеет дело с отношением. так что лучше обернуть вещи на стороне контроллера вместо модели. –