поэтому у меня есть код, который показывает весь мой продукт
@foreach($products as $product)
<div class="col-lg-4 col-md-4 col-sm-6 col-12 event-item-col ">
<div class="card card-event info-overlay">
<div class="img has-background h-50">
<div class="pop-info ">
<span class="event-badges ">
<span class="badge price-tag big badge-default">{{$product->price}}</span>
</span>
</div>
<a href="/product/{{$product->id}}" class="event-pop-link">
<span class="event-badges ">
<span class="badge badge-danger"> if he buy</span>
</span>
<div class="event-pop-info">
<p class="badge">{{$product->price}}</p>
<p class="publisher">by <strong><?php $id = $product->user_id; $users = $user->findOrFail($id); echo $users->first; ?> <?php echo $user->last ?></strong></p>
</div>
</a>
<a href="event-details.html">
<img alt="340x230" class="card-img-top img-responsive h-100" data-holder-rendered="true" src="image/products/product{{$product->id}}.jpg"> </a>
</div>
<div class="card-body h-50">
<h4 class="card-title">
<a href="/product/{{$product->id}}">{{$product->pname}}</a>
</h4>
<p class="card-tex" style="overflow: hidden">{{$product->smalldescription}}</p>
<div class="card-event-info">
<p class="event-location"><i class="fas fa-location-arrow"></i>
<a class="location" href="/user/product/{{$id}}"><?php echo $users->first; ?> <?php echo $user->last ?></a></p>
<p class="event-time"><i class="fas fa-calendar-alt"> {{$product->created_at->format('m/d/Y')}}</i></p>
</div>
</div>
</div>
</div>
@endforeach
а это мой контроллер
public function index()
{
$user = User::find(1);
$products = product::orderBy('created_at', 'desc')->Paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null);
return view('welcome', compact('products', 'user'));
}
как вы можете видеть на мой взгляд, у меня есть этот код
<?php $id = $product->user_id; $users = $user->findOrFail($id); echo $users->first; ?> <?php echo $user->last ?>
, который позволяет мне получить имя пользователя, который создает этот продукт, таблица продукта и пользователя имеет слишком много взаимосвязей. Я хочу изменить этот код на лучший и меньший код.
product->user->first
не работает.
Я пробовал так много способов, но это просто не работает.
если кто-нибудь может помочь мне получить данные с laravel способом, я буду благодарен. (извините, если мой вопрос дублируется, я пробовал так много способов, но ничего не вышло)
чтобы дать вам больше информации, это мой класс
class User extends Authenticatable
{
use Notifiable;
use Friendable;
protected $fillable = [
'first','last', 'email', 'password','phone','question','answer','description',
];
protected $hidden = [
'password', 'remember_token',
];
public function products()
{
return $this->hasMany(Product::class);
}
}
и класс продукции:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
the class product extends Model
{
protected $fillable = [
'part_id', 'smalldescription', 'description', 'pname', 'link', 'price',
];
public function users()
{
return $this->belongsTo(User::class);
}
}