Как я использую отношения в шаблоне лезвия (hasOne) || Laravel

Хорошо, я пытаюсь получить «лайки» и «пользователей» в сообщениях по отношениям hasOne.

вот мой Post.php модель
Класс Сообщений расширяет Модель
{
защищенный $ table = ‘posts’;

public function User()
{
return $this->hasOne(User::class, 'id', 'user_id');
}

public function Like()
{
return $this->hasOne(Like::class, 'post_id', 'id');
}}

Шаблон моего клинка

@foreach ($showdeals as $deal)<div class="tab-pane active" id="home" role="tabpanel">
<div class="card-body">
<div class="profiletimeline">

{{$deal->like->status}}
<br>
{{$deal->user->email}}

<div class="sl-item">
<div class="sl-left"> <img src=" {{asset( '/assets/images/users/2.jpg')}}" alt="user" class="img-circle"> </div>
<div class="sl-right">
<div> <a href="#" class="link">{{$deal->user->username}}</a> || {{$deal->subject}} <Br> <span class="sl-date">{{$deal->created_at}}</span>
<div class="m-t-20 row">
<div class="col-md-3 col-xs-12"><img src="{{$deal->image}}" alt="user" class="img-responsive radius"></div>
<div class="col-md-9 col-xs-12">
<p> {{$deal->body}} </p> <a href="{{$deal->link}}" class="btn btn-success"> עבור למוצר </a></div>
</div>
<div class="like-comm m-t-20"> <a href="javascript:void(0)" class="link m-r-10">2 תגובות</a> <a href="javascript:void(0)" class="link m-r-10"><i class="fa fa-heart text-danger"></i> 5 לייקים</a> </div>
</div>
</div>
</div></div>
<hr></div>
</div>

@endforeach

И есть мой контроллер

Класс PostsController расширяет контроллер
{

public function showdeals()
{

$showdeals = Posts::with( 'User', 'Like')->get();
return view('posts.show', compact('showdeals'));
}public function helpnewview(){
return view('posts.anew');
}public function helpnew(Request $request){
//User pick link
$userlink = $request['userlink'];
return \Redirect::route('newdeal', compact('userlink'));
}public function new(Request $request)
{
//Emdeb user link
$link = Embed::create($request['userlink']);
$linke = $request['userlink'];
return view('posts.new', compact('link', 'userlink', 'linke'));
}public function create(Request $request)
{

$posts = New Posts;
$posts->user_id = Auth::User()->id;
$posts->subject = $request['subject'];
$posts->body = $request['body'];
$posts->link = $request['link'];
$posts->price = $request['price'];
$posts->image = $request['image'];
$posts->tag = $request['tag'];
$posts->save();

return back();
}

}

Теперь, если я сделаю что-то вроде {{$deal->user->email}} это будет работать,
если я пойду к чему-то вроде этого {{$deal->like->status}} его не работает,
я что-то пропустил ?

1

Решение

Если ты хочешь множественные отношения чтобы быть загруженным, вам нужно использовать массив отношений: Model::with(['rl1', 'rl2'])->get();

public function showdeals()
{
...
$showdeals = Posts::with(['User', 'Like'])->get();
...
}

РЕДАКТИРОВАТЬ:

От этого json в комментариях, которые я вижу, нет атрибута с именем status в вашем Like модель, так что, вероятно, корень проблемы

0

Другие решения

Контроллер редактирует этот код

  public function showdeals()
{
$showdeals = Posts::all();
return view('posts.show', compact('showdeals'));
}

И код блейд-файла

 @foreach ($showdeals as $deal)
<div class="tab-pane active" id="home" role="tabpanel">
<div class="card-body">
<div class="profiletimeline">

{{ $deal->Like->status }}
<br>
{{ $deal->User->email }}

@endforeach
0

Я думаю, что все хорошо, кроме

{{$ Deal-> как-> статус}}
{{$ Deal-> user-> электронной почты}}

Пожалуйста, попробуйте как

{{$deal->Like()->status}}
<br>
{{$deal->User()->email}}
0
По вопросам рекламы [email protected]