我在Laravel 5.5应用程序中有一个刀片模板,它返回一个用户ID整数
我正在寻找一种方法来从刀片模板中获取该值的用户名
该值只保存在表中,并且没有关系设置,是否有办法获取用户名而无需建立关系?
**更新**
我的产品控制器看起来像这样......
public function index()
{
$users = User::all();
$products= Product::all();
return view('products.index',compact('products', 'users'));
}
所以现在我在刀片模板中提供了用户,但现在我需要从产品中包含的id中获取用户
答案 0 :(得分:1)
创建帮助文件:按照此规则进行操作:https://laravel-news.com/creating-helpers
并制作一个这样的函数:
function getUsername($uerId) {
return \DB::table('users')->where('user_id', $userId)->first()->name;
}
并从您的视图中调用此函数,如下所示:
{{getUsername($id))}} //it will print user name;
答案 1 :(得分:1)
在将用户数据传递给视图的控制器中,您可以传递整个$user
对象并在视图中将其打印为{{ $user->name }}
,也可以设置一个只包含用户名的变量传递它,但是你正在使用它。
我会做第一个,比如:
public function index()
{
$user = User::where('id',$id)->firstOrFail();
return view('dashboard.index', compact('user'));
}
或者,如果您从数据库中获取所有用户,则可以使用以下示例:
public function index()
{
$users = User::all();
return view('dashboard.index', compact('users'));
}
然后在你看来你可以做到
@foreach($users as $user)
{{ $user->name }}
@endforeach
修改强>
自从看到您更新的问题后,您就可以在users
和products
之间建立关系。所以,你会说user has many products
和product belongs to a user
。
class User extends Model
{
/**
* Get all of the products for the user.
*/
public function products()
{
return $this->hasMany('App\Product');
}
}
然后
class Product extends Model
{
/**
* Get the user that is assigned to the product
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
设置好后,您可以循环浏览产品并获取如下用户名:
@foreach($products as $product)
{{ $product->user->name }}
@endforeach
答案 2 :(得分:0)
Auth::user()->name
如果用户在线。如果不是,你必须具有如下控制器功能:
$users = User::all();
and in blade
@foerach($users as $user)
{{$user->name}}
@endforeach
答案 3 :(得分:0)
{{\App\User::findOrFail($id)->name}}