Почему метод first() работает, а get() - нет в контроллере?
Столкнулась со следующей ошибкой.
"Property [id] does not exist on this collection instance."
Есть следующий контроллер
namespace App\Http\Controllers\API\App;
use App\Http\Resources\UserPredictablePeriodResource;
use App\Models\UserPredictablePeriod;
use App\Http\Controllers\API\BaseController as BaseController;
use Illuminate\Support\Facades\Auth;
class UserPredictablePeriodController extends BaseController
{
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show()
{
$user = Auth::user();
$userPredictablePeriod = UserPredictablePeriod::where("user_id", $user->id)->get();
if (is_null($userPredictablePeriod)) {
return $this->sendError(`Predictable periods not found`);
}
return $this->sendResponse(new UserPredictablePeriodResource($userPredictablePeriod), 'Predictable periods retrieved successfully.');
}
}
Есть следующая модель
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class UserPredictablePeriod extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'user_id',
'started_at',
'finished_at',
'days_last'
];
}
И следующий ресурс
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserPredictablePeriodResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'user_id' => $this->user_id,
'started_at' => $this->started_at,
'finished_at' => $this->finished_at,
'days_last' => $this->days_last,
'created_at' => $this->created_at->format('d/m/Y'),
'updated_at' => $this->updated_at->format('d/m/Y'),
];
}
}
Однако, если вместо метода get() установить first(), то выдает первую запись того информационного массива, который мне и необходим. Каким образом можно решить данную задачу?
Источник: Stack Overflow на русском