无法从产品表中指定“标题” - php artisan tinker
Posted
技术标签:
【中文标题】无法从产品表中指定“标题” - php artisan tinker【英文标题】:Cannot specify 'title' from product table - php artisan tinker 【发布时间】:2020-03-05 03:48:57 【问题描述】:使用php artisan tinker
,我可以提取与数据库中的第一个用户相关的产品表
>>> App\User::first()->product;
=> Illuminate\Database\Eloquent\Collection #2912
all: [
App\product #2898
id: 2,
owner_id: 2,
title: "ListingTestTitle",
description: "ListingTestDescription",
price: "420.69",
created_at: "2019-11-08 13:21:28",
updated_at: "2019-11-08 13:21:28",
,
],
但是,当我尝试进一步进入这个集合并抓住标题时,我收到以下错误
>>> App\User::first()->product->title;
Exception with message 'Property [title] does not exist on this collection instance.'
无论我尝试提取哪个属性,都会遇到同样的问题。
【问题讨论】:
作为旁注,这就是为什么正确的变量命名很重要。product
是一个单数名词,应该反映一个实例,所以让它以 Collection
的形式返回 hasMany()
是错误的。如果要使用 hasMany()
并获取多个 Product
实例,则此关系应为 products
,如果要使用 hasOne()
或 belongsTo()
并获取单个 Product
实例,则应为 product
。另外,类名是StudlyCase
,所以是App\Product
,而不是App\product
。
我将致力于更好的命名约定。非常感谢您的信息
【参考方案1】:
因为product
是您的User
模型中的hasMany
关系,所以也可以从关系集合中访问第一个关系
App\User::first()->product->first()->title;
或者只是将关系更改为hasOne
希望对你有帮助
【讨论】:
【参考方案2】:App\User::first()->product->first()->title;
【讨论】:
虽然这是正确的,但您应该花一点时间解释一下为什么他们应该使用此代码。【参考方案3】:您可以在 User
模型中使用 hasOne
关系
App\User::first()->product->first()->title;
【讨论】:
以上是关于无法从产品表中指定“标题” - php artisan tinker的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 无法在 FROM 多个表连接中指定要更新的目标表
错误 1093:MySQL 无法在 FROM 子句中指定更新的目标表
无法运行查询给出 mySQL 错误 #1093 - 您无法在 FROM 子句中指定目标表“成员”进行更新 [重复]
Mysql 错误:1093 - 无法在 FROM 子句中指定要更新的目标表
如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表 'crawlLog' 进行更新?