درود این مدال من با نام tag هستش :
class Tag extends Model { protected $fillable=['tag','foreign_id','usage']; protected $casts=['tags'=>'array']; public $timestamps=false; public function TagSentences(){ return $this->whereUsage('sentence'); } public function TagStartLetter($key){ return $this->where('tag', 'like', $key.'%'); } public function TagWords(){ return $this->whereUsage('word'); } }
حالا چرا خط کد زیرم جواب نمیده :
$object=new Tag(); // return $object->TagWords()->get(); //worked // return $object->TagStartLetter('a')->get(); //worked // return $object->TagWords()->TagStartLetter('s')->get(); // not worked
یعنی نمیتونم توابع رو روی هم فراخونی کنم ؟ درصورتی که مشکلی نباید داشته باشه چون انگار دو تا where رو پشت سر هم فراخونی میکنم؟
پیشاپیش ممنونم
با سلام و درود
شما به جای این توابع بهتره از scope استفاده کنی که راحت تره و طبق یک اصولی مثلا به جای این تابع
public function TagStartLetter($key){ return $this->where('tag', 'like', $key.'%'); }
خیلی راحت می تونی بنویسی
public function scopeTagStartLetter($query, $key){ return $query->where('tag', 'like', $key.'%'); }
و هر جا نیاز داشتی استفاده کنی
Tag::tagStartLetter('s')->get();
بازم سوالی بود یا کمکی لازم داشتید بفرمایید
سلام.
نبایدم جواب بده چون در انتهای tagwords باید $this رو return کنید
class fakeString { private $str; function __construct() { $this->str = ""; } function addA() { $this->str .= "a"; return $this; } function addB() { $this->str .= "b"; return $this; } function getStr() { return $this->str; } } $a = new fakeString(); echo $a->addA()->addB()->getStr(); This outputs "ab"
با سلام و درود
شما به جای این توابع بهتره از scope استفاده کنی که راحت تره و طبق یک اصولی مثلا به جای این تابع
public function TagStartLetter($key){ return $this->where('tag', 'like', $key.'%'); }
خیلی راحت می تونی بنویسی
public function scopeTagStartLetter($query, $key){ return $query->where('tag', 'like', $key.'%'); }
و هر جا نیاز داشتی استفاده کنی
Tag::tagStartLetter('s')->get();
بازم سوالی بود یا کمکی لازم داشتید بفرمایید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟