我正在使用以下代码从表中获取记录:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Collection;
use App\Http\Requests;
//use App\tempLogin;
class loginController extends Controller
{
public function checkCredentials(Request $request){
$mobile = $request->mobile;
$users = App\tempLogin::where('mobile','=',$mobile)->get();
return $user->name;
}但这是一个雄辩的对象,所以它给我一个错误。还有什么办法可以做到呢?
发布于 2016-10-10 08:30:26
你有个打字错误
$users = \App\tempLogin::where('mobile','=',$mobile)->get();//you are getting $users&回归
return $user->name;所以把它改为
return $users->name;但我仍然怀疑它将解决您的问题,因为您正在使用get & get返回一个collection,除非您在tempLogin模型中有一个关系。
所以我假设您在DB中有一个记录,它的
mobile等于某个东西&如果是这样的话,您希望返回它的名称,那么就可以使用这个解决方案了。
$users = \App\tempLogin::where('mobile','=',$mobile)->firstOrFail();//source https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Builder.php#L299-L306然后再回来
return $users->name;如果DB中有多个记录&您想要执行一个
get,那么可以这样做
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get();这将只从表中选择name。
现在你可以回来了
return $users;它将是tempLogin模型的集合&如果您将它作为api使用,它将自动使用laravel请求进行JSON编码,如下所示
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]或者,如果您想将记录作为数组返回,可以这样使用
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;这将返回这样一个数组
[
"YOUR_NAME_OF_THE_RECORD",
"YOUR_NAME_OF_THE_RECORD",
]You have a typo
$users = \App\tempLogin::where('mobile','=',$mobile)->get();//you are getting $users&回归
return $user->name;所以把它改为
return $users->name;但我仍然怀疑它将解决您的问题,因为您正在使用get & get返回一个collection,除非您在tempLogin模型中有一个关系。
所以我假设您在DB中有一个记录,它的
mobile等于某个东西&如果是这样的话,您希望返回它的名称,那么就可以使用这个解决方案了。
$users = \App\tempLogin::where('mobile','=',$mobile)->firstOrFail();//source https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Builder.php#L299-L306然后再回来
return $users->name;如果DB中有多个记录&您想要执行一个
get,那么可以这样做
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get();这将只从表中选择name。
现在你可以回来了
return $users;它将是tempLogin模型的集合&如果您将它作为api使用,它将自动使用laravel请求进行JSON编码,如下所示
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]或者,如果您想将记录作为数组返回,可以这样使用
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;这将返回这样一个数组
[
"YOUR_NAME_OF_THE_RECORD",
"YOUR_NAME_OF_THE_RECORD",
]发布于 2016-10-10 08:23:08
您正在尝试使用未定义的$user变量。您应该遍历集合以获得单个用户:
foreach ($users as $user) {
echo $user->name;
}发布于 2016-10-10 08:24:08
通常,您可以循环如下所示的集合项:
$users = App\tempLogin::where('mobile','=',$mobile)->get();
if($users->count() > 0)
{
forach($users as $user)
{
// do something with the App\User model
$name = $user->name;
}
}但是,如果要以数组的形式访问users集合,请按以下方式更改查询:
$users = App\tempLogin::where('mobile','=',$mobile)->toArray();然后您可以这样访问它:
foreach($users as $user)
{
// now the $user contains an array containing each row data.
$name = $user["name"];
}如果您想访问单个用户:
$user = App\tempLogin::where('mobile','=',$mobile)->first();
$name = $user->name;这将向您获取第一个行(偏移量0,限制1)。您需要指定获得所需的第一行的顺序。
https://stackoverflow.com/questions/39953094
复制相似问题