Laravel 片段 (v.1.13.0):关系问题(一对多,...)
Laravel Snippets (v.1.13.0): Problems with relationships (One-To-Many, ...)
简介
我正在将此插件用于 Visual Studio 代码。
与它建立关系时。我的观点似乎行不通。我在浏览器中收到错误消息(见下文)。
Laravel Snippets ID: onecentlin.laravel5-snippets Beschreibung:
Laravel snippets for Visual Studio Code (Support Laravel 5 and above)
Version: 1.13.0 Herausgeber: Winnie Lin Link zum Visual Studio
Marketplace: https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel5-snippets
我的模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
use HasFactory;
protected $fillable = [];
/**
* Get the phone associated with the Person
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function phone(): HasOne
{
return $this->hasOne(Phone::class);
}
}
调用视图时浏览器显示错误
TypeError Return value of App\Models\Person::phone() must be an instance of
App\Models\HasOne, instance of
Illuminate\Database\Eloquent\Relations\HasOne returned (View:
C:\Users\MusaSaglam\componenttest\resources\views\test\index.blade.php)
我的观点
<x-layout>
<main class="main" id="top">
<div class="container" data-layout="container">
<script>
var isFluid = JSON.parse(localStorage.getItem('isFluid'));
if (isFluid) {
var container = document.querySelector('[data-layout]');
container.classList.remove('container');
container.classList.add('container-fluid');
}
</script>
<x-nav.admin-nav/>
<div class="content">
<x-nav.admin-nav-top/>
<h1>People</h1>
@foreach ($people as $person)
<h2>{{ $person->id }}</h2>
<h2>{{ $person->phone->number }}</h2>
@endforeach
</div>
</div>
</main>
</x-layout>
但是如果我在模型中 public 函数 phone() 之后删除 : HasOne。一切正常。
两个问题
- 为什么代码段添加 :HasOne。这样做有什么好处?
- 使用没有 : HasOne 的片段不会让像我这样的用户更容易吗?
我是初学者,我不明白为什么教程不起作用。
可以参考类型声明https://www.php.net/manual/en/language.types.declarations.php
- 为什么代码段添加:HasOne。这样做有什么好处?
- 这是 return 类型的方法,它是标准的,因此 VS 代码插件为您提供了符合行业标准的片段(代码)。
- 使用没有 : HasOne 的代码片段不会让像我这样的用户更轻松吗?我是初学者,我不明白为什么教程不起作用。
- 此代码段会起作用,不用担心。只需在 class 初始化之前声明 HasOne,如
use Illuminate\Database\Eloquent\Relations\HasOne
,它应该可以工作。
顺便说一句,类型提示是可选的,因此如果您只是删除 :HasOne(return 类型的方法,则代码片段将起作用。你已经试过了。
简介 我正在将此插件用于 Visual Studio 代码。 与它建立关系时。我的观点似乎行不通。我在浏览器中收到错误消息(见下文)。
Laravel Snippets ID: onecentlin.laravel5-snippets Beschreibung: Laravel snippets for Visual Studio Code (Support Laravel 5 and above) Version: 1.13.0 Herausgeber: Winnie Lin Link zum Visual Studio Marketplace: https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel5-snippets
我的模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
use HasFactory;
protected $fillable = [];
/**
* Get the phone associated with the Person
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function phone(): HasOne
{
return $this->hasOne(Phone::class);
}
}
调用视图时浏览器显示错误
TypeError Return value of App\Models\Person::phone() must be an instance of App\Models\HasOne, instance of Illuminate\Database\Eloquent\Relations\HasOne returned (View: C:\Users\MusaSaglam\componenttest\resources\views\test\index.blade.php)
我的观点
<x-layout>
<main class="main" id="top">
<div class="container" data-layout="container">
<script>
var isFluid = JSON.parse(localStorage.getItem('isFluid'));
if (isFluid) {
var container = document.querySelector('[data-layout]');
container.classList.remove('container');
container.classList.add('container-fluid');
}
</script>
<x-nav.admin-nav/>
<div class="content">
<x-nav.admin-nav-top/>
<h1>People</h1>
@foreach ($people as $person)
<h2>{{ $person->id }}</h2>
<h2>{{ $person->phone->number }}</h2>
@endforeach
</div>
</div>
</main>
</x-layout>
但是如果我在模型中 public 函数 phone() 之后删除 : HasOne。一切正常。
两个问题
- 为什么代码段添加 :HasOne。这样做有什么好处?
- 使用没有 : HasOne 的片段不会让像我这样的用户更容易吗? 我是初学者,我不明白为什么教程不起作用。
可以参考类型声明https://www.php.net/manual/en/language.types.declarations.php
- 为什么代码段添加:HasOne。这样做有什么好处?
- 这是 return 类型的方法,它是标准的,因此 VS 代码插件为您提供了符合行业标准的片段(代码)。
- 使用没有 : HasOne 的代码片段不会让像我这样的用户更轻松吗?我是初学者,我不明白为什么教程不起作用。
- 此代码段会起作用,不用担心。只需在 class 初始化之前声明 HasOne,如
use Illuminate\Database\Eloquent\Relations\HasOne
,它应该可以工作。
顺便说一句,类型提示是可选的,因此如果您只是删除 :HasOne(return 类型的方法,则代码片段将起作用。你已经试过了。